Cod sursa(job #431339)

Utilizator petroMilut Petronela petro Data 31 martie 2010 21:09:23
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include<stdio.h>

FILE *f=fopen("deque.in","r");
FILE *g=fopen("deque.out","w");
#define M 5000010
long n,k,v[M],d[M];

void cit()
{
	fscanf(f,"%ld%ld",&n,&k);
	long i;
	for(i=1;i<=n;++i)
		fscanf(f,"%ld",&v[i]);
	fclose(f);
}

void sol()
{
	long long s=0;
	long i,p=1,u=0;
	for(i=1;i<=n;++i)
	{
		while(p<=u && v[i]<=v[d[u]]) u--;
		d[++u]=i;
		
		if(d[p]==i-k) p++;
		if(i>=k) s+=v[d[p]];
	}
	fprintf(g,"%lld\n",s);
	fclose(g);
}
int main()
{
	cit();
	sol();
	return 0;
}