Cod sursa(job #562895)

Utilizator TabaraTabara Mihai Tabara Data 24 martie 2011 00:17:37
Problema Deque Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.53 kb
#include <stdio.h>

#define NMAX 5000005

int N, K;
int A[NMAX], deque[NMAX];
int front, back;
long long sum;

int main(void)
{
	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; // deque vid
	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;
}