Pagini recente » Cod sursa (job #1543946) | Cod sursa (job #113827) | Cod sursa (job #562800) | Cod sursa (job #2859216) | Cod sursa (job #248529)
Cod sursa(job #248529)
#include <stdio.h>
#define nmax 5000005
int stack[nmax], posit[nmax];
int i, N, K, N1, N2, e;
long long sum;
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d%d", &N, &K);
for (N1 = 0, N2 = -1, i = 1; i <= N; ++i)
{
scanf("%d", &e);
++N2;
stack[N2] = e;
posit[N2] = i;
while (stack[N2] < stack[N2-1] && N2-1 >= N1)
{
N2--;
stack[N2] = stack[N2+1];
posit[N2] = posit[N2+1];
}
while (posit[N1] <= i-K)
N1++;
if (i >= K)
sum += stack[N1];
}
printf("%lld", sum);
return 0;
}