Cod sursa(job #269643)

Utilizator Andrei200Andrei200 Andrei200 Data 3 martie 2009 09:57:02
Problema Carnati Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <stdio.h>  
#include <algorithm> 
  
using namespace std;  
#define FIN "carnati.in"   
#define FOUT "carnati.out"   
#define NMAX 1000   
  
int N,C;   
int P[NMAX],T[NMAX];   
int X,Y;   
int i,ii;   
int G;   
long int REZ;    
  
int max(int a, int b)   
{   
    if (a>b)   
        return a;   
        else  
        return b;   
}            
    
void read_data()   
{   
   freopen(FIN,"rt",stdin);   
   scanf("%d %d", &N, &C);   
   for (i=1;i<=N;++i)   
         scanf("%d %d", &T[i], &P[i]);   
   sort(T+1,T+N+1);
}   
  
void solve()   
{   
    for (i=1;i<=N;++i)   
          {   
                X=0;   
                for (ii=1;ii<=N;++ii)   
                     {   
                            if (P[ii]<P[i])   
                                 G=0;   
                                 else  
                                 G=P[i];   
                            Y=G+X-(T[ii]-T[ii-1])*C;   
                            Y=max(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;   
}