Cod sursa(job #404472)

Utilizator toniobFMI - Barbalau Antonio toniob Data 26 februarie 2010 10:47:22
Problema Deque Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>
#define RUN_TONIO int main(){exe();return 0;}
#include <deque>

using namespace std;
const int NMax=1<<20;

deque <int> D(NMax);
int N, K, v[NMax];
long long sum;

void read(){
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	scanf("%d %d\n", &N,&K);
}

void to_N(){
	for(int i=1;i<=N;++i){
		scanf("%d",v+i);
	}
}

void deque_D(){
	for(int i=1;i<=N;++i){
 		while(D.size()>0 && D.back()>v[i]){
			D.pop_back();
		}
		D.push_back(v[i]);
		if(i>=K){
			if (i>K && D.front()==v[i-K]){
				D.pop_front();
			}
			sum+=D.front();
		}
	}
}

void write(){
	printf("%lld\n",sum);
}

void exe(){
	read();
	to_N();
	deque_D();
	write();
}

RUN_TONIO