Cod sursa(job #210101)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 26 septembrie 2008 16:51:25
Problema Carnati Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>   
  
#define FIN "carnati.in"   
#define FOUT "carnati.out"   
#define NMAX 2010   
  
long int N,C;   
long int P[NMAX],T[NMAX];   
long int X,Y;   
long int i,j;   
long int G;   
long int REZ=0;    
  
long int max(long int a, long int b)   
{   
    if (a>b)   
        return a;   
        else  
        return b;   
}            
    
void read_data()   
{   
   freopen(FIN,"rt",stdin);   
   scanf("%ld %ld", &N, &C);   
   for (i=1;i<=N;++i)   
         scanf("%ld %ld", &T[i], &P[i]);   
}   
  
void solve()   
{   
 for(i=1;i<=N;++i)
      {
      X=0;
      for(j=1;j<=N;++j)
	{

	if(P[j]>=P[i])
	G=P[i];
	else
	G=0;
	Y=X-(T[j]-T[j-1])*C+G;

	if (Y<G-C) Y=G-C;
	if (Y>REZ) REZ=Y;
	X=Y;
       }  
   
      }
}
          
void write_data()   
{   
    freopen(FOUT,"wt",stdout);   
    printf("%ld", REZ);   
}   
  
int main()   
{   
    read_data();   
    solve();   
    write_data();   
    return 0;   
}