Cod sursa(job #344318)

Utilizator digital_phreakMolache Andrei digital_phreak Data 29 august 2009 17:54:57
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <stdio.h>
#define MAXN 5000010

long A[MAXN],Deque[MAXN];
long Back,Front,N,K;
long long res;

int main() {
	long i;
	
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	
	scanf("%ld%ld",&N,&K);
	
	for (i=1;i<=N;++i) scanf("%ld",&A[i]);
	Back = 0;
	Front = 1;
	
	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) res += A[Deque[Front]];
	}
	
	printf("%lld\n",res);
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
}