Cod sursa(job #821294)

Utilizator davidoceaSintamarian David davidocea Data 21 noiembrie 2012 23:48:53
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <cstdio>
#include <deque>
using namespace std;
int f[5000010];
deque<int> deq;
int main ( ) {
	freopen("deque.in","r",stdin);
	//freopen("deque.out","w",stdout);
	int n,k,i;
	long long s=0;
	scanf("%d %d",&n,&k);
	for(i=1;i<=n;++i){
		scanf("%d",&f[i]);
	}
	deq.push_front(1);
	for(i=1;i<=n;++i){
		for(;deq.front()<=deq.back()&&f[deq.back()]>=f[i];){
			deq.pop_back();
		}
		deq.push_back(i);
		if(deq.front()<=i-k){
			deq.pop_front();
		}
		if(i>=k){
			s+=f[deq.front()];
		}
	}
	printf("%lld",s);
}