Cod sursa(job #625558)

Utilizator ContraPunctContrapunct ContraPunct Data 24 octombrie 2011 22:16:50
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<cstdio>
#define Nmax 5000001
int n, k, a[Nmax], c[Nmax];
long long suma;
void ReadData()
{
	scanf("%d %d",&n,&k);
	/*for( int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}*/
}
void CalcSumaMin()
{
	int prim=1, ultim = 0,i;
	for( i = 1; i<=n;++i)
	{
		scanf("%d",&a[i]);
		while( prim <= ultim && a[i] < a[c[ultim]])
			--ultim;
		c[++ultim]=i;

		if (c[prim] == i-k) 
			++prim;

		if (i >= k) 
			suma += a[c[prim]];   
	}	
}

int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	ReadData();
	CalcSumaMin();
	printf("%lld\n",suma);
	return 0;
}