Cod sursa(job #442364)

Utilizator ChallengeMurtaza Alexandru Challenge Data 14 aprilie 2010 11:08:52
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>

using namespace std;

const char InFile[]="deque.in";
const char OutFile[]="deque.out";
const int MaxN=5000005;

ifstream fin(InFile);
ofstream fout(OutFile);

int N,K,ST,SF,V[MaxN],Deque[MaxN];
long long SUM;

int main()
{
	fin>>N>>K;
	for(register int i=1;i<=N;++i)
		fin>>V[i];
	fin.close();
	
	ST=1;
	SF=0;
	for(register int i=1;i<=N;++i)
	{
		while(ST<=SF && V[i]<=V[Deque[SF]])--SF;
		
		Deque[++SF]=i;
		
		if(Deque[ST]==i-K)++ST;
		
		if(i>=K)
			SUM+=V[Deque[ST]];
	}
	
	fout<<SUM;
	fout.close();
	return 0;
}