Pagini recente » Cod sursa (job #3246479) | £ £ £ | Arhiva de probleme | £ £ £ | Cod sursa (job #235944)
Cod sursa(job #235944)
#include <cstdio>
#define FIN "deque.in"
#define FOUT "deque.out"
#define MAX_N 5000005
int A[MAX_N];
int D[MAX_N]; // deque
int N, K;
long long RES;
int main ()
{
int li, lf, i;
freopen (FIN, "r", stdin);
freopen (FOUT, "w", stdout);
scanf ("%d %d", &N, &K);
for (i = 1; i <= N; ++i) scanf ("%d", A + i);
li = lf = 0;
for (i = 1; i <= N; ++i)
{
D[++lf] = i;
while (lf > 1 && A[D[lf]] < A[D[lf - 1]]) D[--lf] = D[lf + 1];
if (i - D[li] == K) ++li;
if (i >= K) RES = (long long) RES + A[D[li]];
}
printf ("%lld\n", RES);
return 0;
}