Cod sursa(job #261172)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 17 februarie 2009 22:01:58
Problema Carnati Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#define max(a,b) (a>b?a:b)

FILE *fin=fopen("carnati.in","r"),
    *fout=fopen("carnati.out","w");

int N,C,T[2005],P[2005];
long long A[2005],max;

int main(){
    fscanf(fin,"%d %d",&N,&C);
    for(int i=1;i<=N;i++)
        fscanf(fin,"%d %d",&T[i],&P[i]);

    int G;
    for(int i=1;i<=N;i++){
        G=P[i];
        for(int j=1;j<=N;j++){
            if(G<=P[j])
                A[j]=max((long long)A[j-1]-(T[j]-T[j-1])*C+G,G-C);
            else
                A[j]=(long long)A[j-1]-(T[j]-T[j-1])*C;
            max=max(max,A[j]);
        }
    }

    fprintf(fout,"%lld\n",max);
    fclose(fin);
    fclose(fout);
    return 0;
}