Cod sursa(job #311869)

Utilizator andreea_alexAndreea Alexandru andreea_alex Data 4 mai 2009 15:45:43
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
#define N 5000005

int d[N],v[N];
int n,K,p,u;

void stanga(int i)
{
	if(i-d[p]>=K)
		++p;
}

void dreapta(int i)
{
	while (p<=u&&v[i]<=v[d[u]])
		--u;
	d[++u]=i;
}

int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	
	int i;
	long long s=0;
	scanf("%d%d",&n,&K);
	for(i=0;i<K;++i)
	{
		scanf("%d", &v[i]);
		dreapta(i);
	}
	s=v[d[p]];
	for(i=K;i<n;++i)
	{
			scanf("%d", &v[i]);
		stanga(i);
		dreapta(i);
		s+=(long long) v[d[p]];
	}
	printf("%lld", s);
return 0;
}