Cod sursa(job #723934)

Utilizator RengelBotocan Bogdan Rengel Data 26 martie 2012 02:47:16
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<cstdio>
#include<deque>

#define MAXN 5000005

std :: deque <int> Deck;

int A[MAXN];
int N,K;

int long long Solutie;

int main(){
	
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	
	scanf("%d %d",&N,&K);
	
	for(int i=1;i<=N;i++)
		scanf("%d",&A[i]);
	
	Deck.push_front(1);
	for(int i=2;i<=N;i++){
		
		while(!Deck.empty() && A[i] < A[Deck.back()])
			Deck.pop_back();
		
		Deck.push_back(i);
		
		if(i-K == Deck.front())
			Deck.pop_front();
		if(i >= K)
			Solutie += (int long long) A[Deck.front()];
		
	}
	
	printf("%lld",Solutie);
	
	return 0;
	
}