Cod sursa(job #350800)

Utilizator crisojogcristian ojog crisojog Data 25 septembrie 2009 22:25:35
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<stdio.h>
long n,k,i,x,st,dr,q[5000000],s;
long poz[5000000];
void rez()
{
	scanf("%ld %ld",&n,&k);
	st=1;
	for(i=1;i<=k;++i)
	{
		scanf("%ld",&x);
		while(x<q[dr] && dr>=st) dr--;
		q[++dr]=x;
		poz[dr]=i;
	}
	
	for(i=k+1;i<=n+1;++i)
	{
		if(i<=n) scanf("%ld",&x);
		if(poz[st]==i-k)
		{
			s+=q[st];
			st++;
		}
		else 
			if(poz[st]>i-k)
				s+=q[st];
		while(x<q[dr] && dr>=st) dr--;
		q[++dr]=x;
		poz[dr]=i;
	}
	printf("%ld\n",s);
}
int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	rez();
	return 0;
}