Cod sursa(job #404840)

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

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

deque <int> D;
int N,K,v[DMax];
long long sum;

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

void to_K(){
	for(int i=1;i<K;++i){
		scanf("%d\n",v+i);
		for(;!D.empty() && v[i]<=v[D.back()];D.pop_back()){}
		D.push_back(i);
	}
}

void to_N(){
	for(int i=K;i<=N;++i){
		scanf("%d\n",v+i);
		for(;!D.empty() && v[i]<=v[D.back()];D.pop_back()){}
		D.push_back(i);
		if(D.front()==i-K){
			D.pop_front();
		}
		sum+=v[D.front()];
	}
}

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

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

RUN_TONIO