Pagini recente » Cod sursa (job #1148361) | Cod sursa (job #2259535) | Cod sursa (job #2827795) | Cod sursa (job #1229931) | Cod sursa (job #761033)
Cod sursa(job #761033)
#include <stdio.h>
int n, k, i, front, back, deque[5000001], a[5000001];
long long sum;
main(void)
{
FILE *in = fopen("deque.in", "r");
FILE *out = fopen("deque.out", "w");
fscanf(in, "%d %d", &n, &k);
for(i = 0; i < n; i++)
fscanf(in, "%d", &a[i]);
back = -1;
for(i = 0; i < n; ++i)
{
while(front <= back && a[i] <= a[ deque[back] ])
back--;
deque[ ++back ] = i;
if(deque[front] == i - k)
++front;
if(i >= (k - 1))
sum += a[ deque[front] ];
}
fprintf(out, "%lld\n", sum);
fclose(in);
fclose(out);
return 0;
}