Cod sursa(job #488557)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 29 septembrie 2010 10:21:16
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <stdio.h>
#define DIM 5000001

int N, K, A[DIM], D[DIM], P, U;
long long S;

void cit () {
	scanf ("%d%d", &N, &K);
	for (int i=1; i<=N; ++i)
		scanf ("%d", &A[i]);
}

void parc () {
	P = 1, U = 0; 
	for (int i=1; i<=N; ++i) {
		while (P<=U && A[D[U]]>=A[i]) --U;
		D[++U] = i;
		if (D[P]<=i-K) ++P;
		if (i>=K) S += A[D[P]];
	}	
}

void afs () {
	printf ("%lld", S);
}

int main () {
	freopen ("deque.in", "r", stdin);
	freopen ("deque.out", "w", stdout);
	
	cit ();
	parc ();
	afs ();
	
	return 0;
}