Pagini recente » Cod sursa (job #2778020) | Cod sursa (job #2043867) | Cod sursa (job #206260) | Cod sursa (job #2947004) | Cod sursa (job #2981197)
#include <stdio.h>
#define MAXN 5000000
#define INFINIT -10000001
int coada[MAXN+1], poz[MAXN+1];
int main()
{
FILE *fin, *fout;
int n, k, index, element, primul, ultim;
long long suma;
fin=fopen("deque.in", "r");
fscanf(fin, "%d%d", &n, &k);
coada[0]=INFINIT;
primul=1;
ultim=1;
for(index=1;index<=k;index++){
fscanf(fin, "%d", &element);
while(element<coada[ultim-1]){
ultim--;
}
coada[ultim]=element;
poz[ultim]=index;
ultim++;
}
suma=coada[primul];
while(index<=n){
fscanf(fin, "%d", &element);
if(poz[primul]==index-k){
coada[primul]=INFINIT;
primul++;
}
while(element<coada[ultim-1]){
ultim--;
}
coada[ultim]=element;
poz[ultim]=index;
ultim++;
suma+=coada[primul];
index++;
}
fclose(fin);
fout=fopen("deque.out", "w");
fprintf(fout, "%lld", suma);
fclose(fout);
return 0;
}