Cod sursa(job #210109)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 26 septembrie 2008 17:29:06
Problema Carnati Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>      
     
#define FIN "carnati.in"      
#define FOUT "carnati.out"      
#define NMAX 3000
     
int N;
long int P[NMAX];
int T[NMAX];
long int X,Y,C;
int i,j;
long int G;      
long long 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("%d %ld", &N, &C);
   for (i=1;i<=N;++i)      
	 scanf("%d %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;
	  Y=max(Y,G-C);
	  REZ=max(REZ,Y);
	  X=Y;
	  }
      }
}   
             
void write_data()      
{      
    freopen(FOUT,"wt",stdout);      
    printf("%lld", REZ);
}      
     
int main()      
{      
    read_data();      
    solve();      
    write_data();      
return 0;
}