Pagini recente » Cod sursa (job #1944701) | Cod sursa (job #1425275) | Cod sursa (job #701673) | Cod sursa (job #360969) | Cod sursa (job #761030)
Cod sursa(job #761030)
#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);
back = -1;
for(; i < (k - 1); ++i)
{
fscanf(in, "%d", &a[i]);
while(front <= back && a[i] <= a[ deque[back] ])
back--;
deque[ ++back ] = i;
}
for(; i < n; ++i)
{
fscanf(in, "%d", &a[i]);
while(front <= back && a[i] <= a[ deque[back] ])
back--;
deque[ ++back ] = i;
if(deque[front] == i - k)
++front;
sum += a[ deque[front] ];
}
fprintf(out, "%lld\n", sum);
fclose(in);
fclose(out);
return 0;
}