Cod sursa(job #550829)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 9 martie 2011 22:42:21
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
#include<algorithm>
#define Nmax 2010
#define Max(a,b) a > b ? a : b 
using namespace std ; 

int A[Nmax] ;
int i,X,sol,n,C,x,add;

struct client { int T,P ; } v[Nmax] ; 

int cmp ( client a, client b ) 
{
	return a.T < b.T ;
}

int main()
{
	freopen("carnati.in","r",stdin);
	freopen("carnati.out","w",stdout);
	
	scanf("%d %d",&n,&C);
	
	for( i = 1 ; i <= n ; i++ )
		scanf("%d %d",&v[i].T,&v[i].P);
	
	sort(v+1,v+n+1,cmp); 
	
	for( x = 1 ; x <= n ; x++ )
	{
		X = v[x].P ; add = 0 ;
		if( v[1].P >= X ) add = X ;
		A[1] = add - C ;  if( A[1] > sol ) sol = A[1] ;
		
		for( i = 2 ; i <= n ; i++ )
		{
			add = 0 ;
			if( v[i].P >= X ) add = X ; 
			
			A[i] = Max( A[i-1] - (v[i].T - v[i-1].T) * C + add, add - C ) ;
			if( A[i] > sol ) sol = A[i] ;
		}
	}
	
	printf("%d",sol);
	
	return 0;
}