Pagini recente » tema | Cod sursa (job #959067) | Cod sursa (job #2241408) | Cod sursa (job #1494432)
#include <stdio.h>
#define lim 5000000
int v[lim+1],deck[lim+1];
int main(){
FILE *fin,*fout;
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
int i,first=0,last=-1,k,n;
long long s=0;
fscanf(fin,"%d%d",&n,&k);
for(i=0;i<k;i++){
last++;
fscanf(fin,"%d",&v[i]);
deck[last]=i;
while(last>first&&v[deck[last]]<=v[deck[last-1]]){
deck[last-1]=deck[last];
last--;
}
}
s=v[deck[first]];
for(i=k;i<n;i++){
last++;
fscanf(fin,"%d",&v[i]);
deck[last]=i;
while(deck[last]-deck[first]+1>k)
first++;
while(last>first&&v[deck[last]]<=v[deck[last-1]]){
deck[last-1]=deck[last];
last--;
}
s=s+(long long)v[deck[first]];
}
fprintf(fout,"%lld",s);
fclose(fin);
fclose(fout);
return 0;
}