Cod sursa(job #147985)

Utilizator marius135Dumitran Adrian Marius marius135 Data 3 martie 2008 19:46:11
Problema Branza Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
#define maxn (1<<19)

long first = 1,last = 0;
long exp[maxn],v[maxn];

void add(long a,long b)
{
	while(v[last] >= a && first <= last)
	{
		last--;
	}
	v[++last] = a;
	exp[last] = b;
	
	
	
	
}

int main()
{
	long n,cost,t,s =0;
	freopen("branza.in","r",stdin);
	freopen("branza.out","w",stdout);
	
	scanf("%ld %ld %ld",&n , &cost, &t);
	
	for( long i = 1; i <= n; ++i)
	{
		long a,cat;
		scanf("%ld %ld",&a,&cat);

		if( exp[first] == i)
		{
			first++;
		}
		a+= cost * (n-i);
		add(a,i+t+1);
		s+= (v[first] - cost * (n-i) )*cat;
	}
	
	printf("%ld\n",s);
	
	
	
	
	return 0;
}