Cod sursa(job #1621509)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 29 februarie 2016 19:35:35
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>

using namespace std;

#define ll long long unsigned
#define pb push_back
#define mp make_pair

int v[5000005],deq[5000005];

int main(){
    int n,i,k,b,e;
    ll sum = 0;
    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);
    scanf("%d %d",&n,&k);
    for(i = 1;i <= n;i++){
        scanf("%d",&v[i]);
    }
    b = 1;
    e = 0;
    for(i = 1;i <= n;i++){
        while(e >= b && v[i] <= v[deq[e]]){
            e--;
        }
        deq[++e] = i;
        if(i >= k){
            if(deq[b] == i-k){
                b++;
            }
            sum += v[deq[b]];
        }
    }
    printf("%lld",sum);
    return 0;
}