Cod sursa(job #235944)

Utilizator floringh06Florin Ghesu floringh06 Data 26 decembrie 2008 13:27:04
Problema Deque Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#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;
	}