Cod sursa(job #210041)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 26 septembrie 2008 10:46:56
Problema Carnati Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <stdio.h>

#define FIN "carnati.in"
#define FOUT "carnati.out"
#define NMAX 2000

long int N,C;
long int P[NMAX],T[NMAX];
long int X,Y;
long int i,ii;
long int G;
long int REZ; 

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 (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;
}