Pagini recente » Cod sursa (job #538309) | Cod sursa (job #1100103) | Cod sursa (job #1262256) | Cod sursa (job #565332) | Cod sursa (job #3275649)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 5000000
int v[MAXN + 1];
int deq[MAXN + 1];
int main()
{
FILE *fin, *fout;
fin = fopen("deque.in", "r");
fout = fopen("deque.out", "w");
int N, K, i, st = 1, poz = 0, nr;
long long sum = 0;
fscanf(fin, "%d%d", &N, &K);
for (i = 1; i < K; i++)
{
fscanf(fin, "%d", &v[i]);
while (st <= poz && v[deq[poz]] > v[i])
{
poz--;
}
deq[++poz] = i;
}
for (i = K; i <= N; i++)
{
fscanf(fin, "%d", &v[i]);
while (st <= poz && v[deq[poz]] > v[i])
{
poz--;
}
deq[++poz] = i;
while (deq[st] < i - K + 1)
{
st++;
}
sum += v[deq[st]];
}
fprintf(fout, "%lld", sum);
fclose(fin);
fclose(fout);
return 0;
}