Cod sursa(job #464607)

Utilizator aladinaladin aladinn aladin Data 20 iunie 2010 23:52:25
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <algorithm>
using namespace std;



struct nod
{
	int p;
	int t;
}  x[2003];

int cmp (const nod a,const nod b)
{
	return a.t<=b.t;
}



int main()
{
	int j,n,i;
	long long maxdr,maxst,max=0,c;
	
	
	
	freopen("carnati.in","r",stdin);
	scanf("%d %lld",&n,&c);
	for (i=1;i<=n;++i) scanf("%d %d",&x[i].t,&x[i].p);
	sort(x+1,x+n+1,cmp);
	for (i=1;i<=n;++i)
	{
		int mx=x[i].p-c,nr=0;
		maxst=maxdr=0;
		for (j=i-1;j>0;--j)
			
				if (x[j].p>=x[i].p) 
					{++nr;
				if (nr*x[i].p-(x[i].t-x[j].t)*c>maxst) maxst=nr*x[i].p-(x[i].t-x[j].t)*c;
					}
		nr=0;
		for (j=i+1;j<=n;++j)
			
				if (x[j].p>=x[i].p) 
					{++nr;
				if (nr*x[i].p-(x[j].t-x[i].t)*c>maxdr) maxdr=nr*x[i].p-(x[j].t-x[i].t)*c;
					}
		if (mx+maxst+maxdr>max) max=mx+maxst+maxdr;
	}
  freopen("carnati.out","w",stdout);
printf("%lld",max);
return 0;}