Cod sursa(job #1161178)

Utilizator SilverGSilver Gains SilverG Data 31 martie 2014 06:40:08
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
/*
	Keep It Simple!
*/

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include<cstdio>

#define MaxN 5000005

int N,K;
int Vals[MaxN], Dequeue[MaxN];
int Front, Back;

long long Sum;

int main()
{
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);

	scanf("%d%d", &N,&K);

	for (int i = 1; i <= N; i++)
		scanf("%d", &Vals[i]);

	for (int i = 1; i <= N; i++)
	{
		while (Front <= Back && Vals[i] <= Vals[Dequeue[Back]]) Back--;
		Dequeue[++Back] = i;
		if (Dequeue[Front] == i - K) Front++;
		if (i >= K) Sum += Vals[Dequeue[Front]];
	}

	printf("%lld", Sum);
}