Cod sursa(job #1357468)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 23 februarie 2015 22:23:05
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
#include<algorithm>
#define MAXN 2015
FILE *f=fopen("carnati.in","r"), *g=fopen("carnati.out","w");

using namespace std;

long int N, C, A[MAXN], CMax=0;

struct Date{ long int t, p; } v[MAXN];

bool cmp( Date Q, Date W ){ if( Q.t < W.t ) return 1; return 0; }

void Citire(){
long int i;

    fscanf(f,"%ld %ld\n",&N,&C);
    for(i=1;i<=N;i++) fscanf(f,"%ld %ld\n",&v[i].t,&v[i].p);
    sort(v+1,v+N+1,cmp);

}

long int R ( long int P ){  // P = pretul afisat
long int i, Pf, Maxim = 0;

    for(i=1;i<=N;i++){

        if( P <= v[i].p ) Pf = P; else Pf = 0;
        if( i >= 2 ) A[i] = max( A[i-1] - (v[i].t-v[i-1].t)*C + Pf , Pf - C );
        else A[1] = Pf - C;

        Maxim = max ( Maxim, A[i] );


    }

    return Maxim;

}

int main(){

    Citire();
    for(long int I=1;I<=N;I++) CMax = max( CMax, R(v[I].p) );
    fprintf(g,"%ld\n",CMax);

return 0;
}