Pagini recente » Cod sursa (job #2648804) | Cod sursa (job #89069) | Cod sursa (job #505513) | Cod sursa (job #19095) | Cod sursa (job #2676746)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 5000000
int deque[MAXN], poz[MAXN];
int main()
{
FILE *fin, *fout;
int n, k, i, el, p, u;
long long s;
fin = fopen("deque.in", "r");
fscanf(fin, "%d%d", &n, &k);
s = 0;
p = u = 0;
for(i = 0; i < k; i++){
fscanf(fin, "%d", &el);
while((p < u) && (el < deque[(u - 1) % k])){
u--;
}
deque[u % k] = el;
poz[u % k] = i;
u++;
}
s += deque[p % k];
for(; i < n; i++){
fscanf(fin, "%d", &el);
if((i - poz[p % k]) == k){
p++;
}
while((p < u) && (el < deque[(u - 1) % k])){
u--;
}
deque[u % k] = el;
poz[u % k] = i;
s += deque[p % k];
u++;
}
fclose(fin);
fout = fopen("deque.out", "w");
fprintf(fout, "%lld", s);
fclose(fout);
return 0;
}