Pagini recente » Cod sursa (job #3172109) | Cod sursa (job #1541472) | Cod sursa (job #2341329) | Cod sursa (job #196365) | Cod sursa (job #503088)
Cod sursa(job #503088)
#include<stdio.h>
FILE *fin, *fout;
long a[5000010],c[5000010],n,k,i,ic,sc;
long long s;
int main(){
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
fscanf(fin,"%ld %ld",&n,&k);
for(i=1;i<=n;i++){
fscanf(fin,"%ld",&a[i]);
}
sc=0;
ic=1;
for(i=1;i<=n;i++){
while(ic<=sc && a[ c[sc] ]>=a[i]){
sc--;
}
sc++;
c[sc]=i;
if(c[ic]==i-k){
ic++;
}
if(i>=k){
s=s+a[ c[ic] ];
}
}
fprintf(fout,"%lld",s);
fclose(fout);
fclose(fin);
return 0;
}