Cod sursa(job #380399)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 6 ianuarie 2010 08:46:32
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <fstream>

using namespace std;

ifstream in("deque.in");
ofstream out("deque.out");

int dq[5000001];
int v[5000001];
int n,k,i,st=1,dr=0,s=0;

inline void stanga(int i){
	if(dq[st]==i-k){
		st++;
	}
}

void dreapta(int i){
	while ( (st<=dr) && ( v[i]<=v[dq[dr]])){
		dr--;
	}
	dq[++dr]=i;
}

int main(){
	in>>n>>k;
	st=1; dr=0;
	for(i=1;i<=n;i++){
		in>>v[i];
	}
	for(i=1;i<=n;i++){
		stanga(i);
		dreapta(i);
		if(i>=k){
			s=s+v[dq[st]];
		}
	}
	out<<s;
	return 0;
}