Cod sursa(job #960106)

Utilizator cousin.batmanVaru Batman cousin.batman Data 9 iunie 2013 19:43:10
Problema Deque Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
#define MAXN 5000005

int a[MAXN], t[MAXN], p, q, n, m, i, x, k;
long long sum;

int main(){
    freopen("deque.in", "rt", stdin);
    freopen("deque.out", "wt", stdout);

    scanf("%d %d", &n, &k);
    p=q=0;
    for(i=0; i<n; i++){
        scanf("%d", &x);

        while(p<q && (i-t[q-1]+1>k || a[q-1]>x))
            --q;
        while(p<q && i-t[p]+1>k)
            ++p;

        a[q] = x;
        t[q] = i;
        q++;
        if(i>=k-1)
            sum=sum+a[p];
        /*printf("PASUL %d, %d, %d:", i, p, q);
        for(x=p; x<q; x++) printf("%d ", a[x]);
        printf("\n");*/
    }

    printf("%lld\n",sum);

    fclose(stdin);
    fclose(stdout);
    return 0;
}