Cod sursa(job #368604)

Utilizator Adela_BaciuAdela Baciu Adela_Baciu Data 25 noiembrie 2009 11:37:14
Problema Carnati Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<cstdio>
#include<algorithm>
using namespace std;
struct CARNATI
{int t,p;};
CARNATI v[2010];
int c,n,mmax;
bool comp(const CARNATI &x,const CARNATI &y)
{
	return (x.t<y.t);
}
int profit(int i)
{
	int pc=0,max=0,j;
	if(v[1].p>=v[i].p)
	{
		max=v[i].p-c;
		pc=max;
	}
	for(j=2;j<=n;++j)
	{
		pc-=c*(v[j].t-v[j-1].t-1);
		if(pc<0)
			pc=0;
		if(v[j].p>=v[i].p)
			pc+=v[i].p;
		pc-=c;
	    if(pc>max)
			max=pc;
	}
	return max;
}
int main()
{
	freopen("carnati.in","r",stdin);
	freopen("carnati.out","w",stdout);
	scanf("%d%d",&n,&c);
	int i,x;
	for(i=1;i<=n;i++)
	{
		scanf("%d%d",&v[i].t,&v[i].p);
	}
	sort(v+1,v+n+1,comp);
	mmax=0;
	for(i=1;i<=n;i++)
	{
		x=profit(i);
		if(mmax<x)
			mmax=x;
	}
	printf("%d",mmax);
	return 0;
}