Cod sursa(job #624272)
Utilizator | Data | 22 octombrie 2011 09:46:06 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.55 kb |
#include<stdio.h>
FILE *fin=fopen("deque.in","r");
FILE *fout=fopen("deque.out","w");
long long s;
int n,k,v[5000005],i,p,u,d[5000005];
int main(){
fscanf(fin,"%d %d",&n,&k);
p=1;
u=1;
d[1]=1;
fscanf(fin,"%d",&v[1]);
for(i=2;i<=n;i++){
fscanf(fin,"%d",&v[i]);
while(p<=u && v[d[u]]>=v[i]){
u--;
}
d[++u]=i;
if(i-d[p]==k){
p++;
}
if(i>=k){
s+=v[d[p]];
}
}
fprintf(fout,"%lld",s);
return 0;
}