Cod sursa(job #517650)

Utilizator acelasi7Tudor Maxim acelasi7 Data 29 decembrie 2010 13:58:35
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>
#include<deque>
using namespace std;
FILE *in=fopen("deque.in","r"),*out=fopen("deque.out","w");
struct ll{long long a;int b;};
deque<ll> D;
int main()
{
	int i,N,K;
	long long x,S=0;
	ll george;
	fscanf(in,"%d %d",&N,&K);
	for(i=1;i<=N;++i)
	{
		fscanf(in,"%lld",&x);
		if(!D.empty())
		{
			while(D.front().b<i+1-K)
				D.pop_front();
			while(D.back().a>x&&!D.empty())
				D.pop_back();
		}
		george.a=x;
		george.b=i;
		D.push_back(george);
		if(i>=K)
			S+=D.front().a;
	}
	fprintf(out,"%lld\n",S);
	fclose(in);
	fclose(out);
	return 0;
}