Cod sursa(job #252802)

Utilizator me_andyAvramescu Andrei me_andy Data 4 februarie 2009 22:12:45
Problema Deque Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <stdio.h>

#define maxn 5010

int N, K;
int A[maxn], Deque[maxn];
int Front, Back;
long long Sum;

int main()
{
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	int i;
	scanf("%d %d ", &N, &K);
	for (i = 1; i <= N; i++)
		scanf("%d ", &A[i]);
	Front = 1, Back = 0;
	for (i = 1; i <= N; i++)
	{
	while (Front <= Back && A[i] <= A[ Deque[Back] ]) Back--;
	Deque[++Back] = i;
	if (Deque[Front] == i-K) Front++;
	if (i >= K) Sum += A[ Deque[Front]];
	}
	printf("%lld\n", Sum);
	return 0;
}