Cod sursa(job #540988)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 24 februarie 2011 18:40:16
Problema Deque Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
# include <stdio.h>
long deque[5000], v[5000];
long n, k, i, st, dr;
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 ("%ld", s);
    return 0;
}