Cod sursa(job #867471)

Utilizator superman_01Avramescu Cristian superman_01 Data 29 ianuarie 2013 18:43:36
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<cstdio>
#include<deque>
#define NMax 50000005

FILE *f=fopen("deque.in","r");
FILE *g=fopen("deque.out","w");
using namespace std;

deque <int> Q;
int v[NMax];
long long s;
int n,k;
void read()
{
	
	int i,j;
	fscanf(f,"%d%d",&n,&k);
	for(i=1;i<=n;i++)
	   fscanf(f,"%d",&v[i]);
	
}
void solve()
{
	int i,j;
	for(i=1;i<=n;i++)
	{
		while(Q.size()&&v[Q.back()]>=v[i])
		Q.pop_back();
		
		Q.push_back(i);
	
		if(Q.front()==(i-k) )
			 Q.pop_front();
		if(i>=k)
			s+=v[Q.front()];		
	}
	
}
void write()
{
	fprintf(g,"%lld",s);
}

int main()
{
	int i,j;
	read();
	solve();
	write();
	return 0;
}