Pagini recente » Cod sursa (job #2614827) | Cod sursa (job #2032319) | Cod sursa (job #3238641) | Cod sursa (job #2895962) | Cod sursa (job #2049593)
#include <stdio.h>
int d[5000000];
int v[5000000];
int main()
{
FILE *fin, *fout;
int n, k;
int i, st, dr;
long long sum;
fin = fopen("deque.in", "r");
fscanf(fin, "%d%d", &n, &k);
for (i = 0; i < n; i++) {
fscanf(fin, "%d", &v[i]);
}
fclose(fin);
st = 0;
dr = -1;
sum = 0LL;
for (i = 0; i < n; i++) {
if (st <= dr && d[st] == i - k)
st++;
while (st <= dr && v[i] <= v[d[dr]]) {
dr--;
}
d[++dr] = i;
if (i >= k - 1)
sum += v[d[st]];
}
fout = fopen("deque.out", "w");
fprintf(fout, "%lld", sum);
fclose(fout);
return 0;
}