Cod sursa(job #210044)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 26 septembrie 2008 10:54:20
Problema Carnati Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.14 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;  
                  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;
}