Cod sursa(job #634184)

Utilizator d.andreiDiaconeasa Andrei d.andrei Data 15 noiembrie 2011 19:49:13
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <cstdio>

#define file_in "deque.in"
#define file_out "deque.out"

long long ans;
int N,K,i;
int V[5010100];
int front,back;
int deque[5010100];


int main(){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &N, &K);
	for (i=1;i<=N;++i)
		 scanf("%d", &V[i]);
	
	
	front=1;
	back=0;
	ans=0;
	
	for (i=1;i<=N;++i){
		
		while(front<=back && V[i]<=V[deque[back]])
			  back--;
		deque[++back]=i;
		if (deque[front]==i-K)
			 front++;
		if (i>=K)
			 ans+=V[deque[front]];
	}
	
	printf("%lld\n", ans);
	
	return 0;
	
}