Pagini recente » Cod sursa (job #3291216) | Cod sursa (job #3147899) | Cod sursa (job #1086312) | Cod sursa (job #3168724) | Cod sursa (job #234178)
Cod sursa(job #234178)
#include <stdio.h>
#include <assert.h>
#define ll long long
#define NMax 5000005
int N, K;
int poz[NMax], v[NMax];
ll Res;
int main()
{
int i, f, l, j;
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d", &N, &K);
assert(1 <= N && N <= 5000000);
assert(1 <= K && K <= N);
for (i = 1; i <= N; ++i)
{
scanf("%d", &v[i]);
assert(-10000000 <= v[i] && v[i] <= 10000000);
}
f = 1; l = 0;
for (i = 1; i <= N; ++i)
{
for (; f <= l && poz[f] <= i-K; ++f);
for (; f <= l && v[i] <= v[poz[l]]; --l);
poz[++l] = i;
if (i >= K)
Res += v[poz[f]];
}
printf("%lld\n", Res);
return 0;
}