Cod sursa(job #395429)

Utilizator otilia_sOtilia Stretcu otilia_s Data 13 februarie 2010 00:50:15
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#include <deque>
using namespace std;
const int NMAX=5000000;
int A[NMAX];

int main()
{
	FILE *fin=fopen("deque.in","r");
	int n,k,i;
	fscanf(fin,"%d%d",&n,&k);
	for (i=1;i<=n;++i) fscanf(fin,"%d",&A[i]);
	long long S=0;
	deque <int> D;	
	for (i=1;i<k;++i)
	 {
		while (!D.empty() && A[D.back()]>=A[i]) D.pop_back();
		D.push_back(i);		
	 } 
	while (i<=n)
	 {
		while (!D.empty() && A[D.back()]>=A[i]) D.pop_back();
		D.push_back(i);		
		if (D.front()<=i-k) D.pop_front();
		S+=A[D.front()];
		i++;
	 }
	fclose(fin);
	FILE *fout=fopen("deque.out","w");
	fprintf(fout,"%lld",S);
	fclose(fout);
	return 0;
}