Pagini recente » Cod sursa (job #2711178) | Cod sursa (job #1931413) | Cod sursa (job #451723) | Cod sursa (job #2244930) | Cod sursa (job #1621773)
#include<stdio.h>
using namespace std;
const int N = 5000000, INF = -100000000;
int v[N], poz[N];
int main ()
{
FILE *in, *out;
in = fopen ("deque.in", "r");
out = fopen ("deque.out", "w");
int n, k;
fscanf (in, "%d%d", &n, &k);
int i, c = 0;
v[0] = INF;
for (i = 1; i <= k; i++)
{
fscanf (in, "%d", &v[++c]);
while (c > 1 && v[c] <= v[c - 1])
v[--c] = v[c + 1];
poz[c] = v[c];
}
long long s = (long long) v[1];
int st = 1;
for (i = k + 1; i <= n; i++)
{
fscanf (in, "%d", &v[++c]);
while (c > st && v[c] <= v[c - 1])
v[--c] = v[c + 1];
poz[c] = i;
if (i - poz[st] == k)
st++;
s += (long long) v[st];
}
fprintf (out, "%lld", s);
return 0;
}