Cod sursa(job #514696)

Utilizator CS-meStanca Marian Ciprian CS-me Data 19 decembrie 2010 13:42:41
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<stdio.h>
FILE *fin, *fout;
int deque[5000001],i,n,v[5000001],p,u,k;
long long s;

int main(){
    fin=fopen("deque.in","r");
    fout=fopen("deque.out","w");

    p=1;
    u=1;
    fscanf(fin,"%d %d",&n,&k);

    for(i=1;i<=n;i++){
        fscanf(fin,"%d",&v[i]);
    }

    deque[1]=1;
    s=0;

    for(i=2;i<=n;i++){
        while(p<=u && v[i]<=v[deque[u]] ){
            u--;
        }
        u++;
        deque[u]=i;

        while(p<=u && i-deque[p]+1>k ){
            p++;
        }
        if(i>=k) s+=v[deque[p]];
    }

    fprintf(fout,"%lld",s);

    fclose(fout);
    fclose(fin);

return 0;
}