Cod sursa(job #490853)

Utilizator crisvirusDutescu Cristian crisvirus Data 8 octombrie 2010 15:58:30
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int sal,n;
const int N=1501;
const int inf=1000000000;
struct client 
{
	int t,p;
};

client v[N];

int val(int pret)
{
	int i,sc,smax,u,deficit;
	sc=0;
	smax=-inf;
	u=-1;
	
	for(i=1;i<=n;++i)
	{
		if(v[i].p<pret)
			continue;
		if(u!=-1)
			deficit =(v[i].t-u-1)*sal;
		else
			deficit=0;
		if(sc<deficit)
			sc=0;
		else 
			sc-=deficit;
		sc=pret+sc-sal;
		if(sc>smax)
			smax=sc;
		u=v[i].t;
	}
	return smax;
}
bool comp(client x,client y)
	{
		return x.t<y.t;
	}
int main()
{
		int i,max=-inf,x;
		freopen("carnati.in","r",stdin);
		freopen("carnati.out","w",stdout);
		scanf("%d%d",&n,&sal);
		for(i=1;i<=n;++i)
			scanf("%d%d",&v[i].t,&v[i].p);
		sort(&v[1],&v[1+n],comp);
		for(i=1;i<=n;++i)
		{
			x=val(v[i].p);
			if(max<x) max=x;
		}
		printf("%d",max);
}