Pagini recente » Cod sursa (job #3136541) | Cod sursa (job #1963915) | Cod sursa (job #408990) | Cod sursa (job #1709565) | Cod sursa (job #673039)
Cod sursa(job #673039)
#include <stdio.h>
#include <stdlib.h>
int main () {
freopen ("deque.in", "r", stdin);
freopen ("deque.out", "w", stdout);
int n, k, enq, deq, i;
scanf ("%d %d", &n, &k);
int *v = (int*) malloc (n * sizeof(int));
int *queue = (int*) malloc (n * sizeof(int));
for (i = 0; i < n; i++)
scanf ("%d ", &v[i]);
queue[0] = 0;
enq = 0;
deq = 0;
long long int s = 0;
for (i = 0; i < n; i++)
{
if (i >= k)
s += v[queue[enq]];
if (queue[enq] == i - k)
{
enq++;
}
while (deq >= enq && v[queue[deq]] >= v[i])
deq--;
queue[++deq] = i;
}
s += v[queue[enq]];
printf ("%lld" , s);
return 0;
}