Cod sursa(job #540990)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 24 februarie 2011 18:41:50
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
# include <stdio.h>
long deque[5000000], v[5000000];
long n, k, i, st, dr;
long long s;
int main (){
    freopen ("deque.in", "r", stdin);
    freopen ("deque.out", "w", stdout);
    scanf ("%ld%ld", &n, &k);
    for (i = 1; i <= n; ++i) scanf ("%d", &v[i]);
    st = 1;
    dr = 0;
    for (i = 1; i <= n; ++i){
    	for (; st <= dr && v[i] <= v[deque[dr]]; --dr);
    	deque[++dr] = i;
        if (deque[st] == i - k) ++st;
    	if (i >= k) s += v[deque[st]];
    }
    printf ("%lld", s);
    return 0;
}