Cod sursa(job #394759)

Utilizator nandoLicker Nandor nando Data 11 februarie 2010 15:48:14
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <cstdio>
#include <deque>

using namespace std;
int a[5000010];

int main(){
	FILE* fin=fopen("deque.in","r");
	FILE* fout=fopen("deque.out","w");

	int n,k;
	long long sm=0;
	deque<int>deq;

	fscanf(fin,"%d %d",&n,&k);

	for(int i=0;i<n;i++){
		fscanf(fin,"%d",&a[i]);

		while(deq.size()>0&&a[i]<=a[deq.back()]){
			deq.pop_back();
		}
		deq.push_back(i);
		if(deq.front()==i-k){
			deq.pop_front();
		}
		if(i>=k-1){
			sm+=a[deq.front()];
		}	
	}
	fprintf(fout,"%lld\n",sm);

	fclose(fin);
	fclose(fout);
}