Cod sursa(job #404461)

Utilizator toniobFMI - Barbalau Antonio toniob Data 26 februarie 2010 10:36:17
Problema Deque Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 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){
 		for(;D.size() && v[i]<=D.back(); D.pop_back()) {}
		D.push_back(v[i]);
		if(D.front()==v[i-K]){
			D.pop_front();
		}
		if(i>=K){
			sum+=D.front();
		}
	}
}

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

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

RUN_TONIO