Cod sursa(job #1357517)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 23 februarie 2015 22:45:13
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>
#include<algorithm>
using namespace std;
struct car{
    int t;
    int p;
}v[2010];
int n,c,i,j,vmax,d[3010];
FILE *f,*g;
int cmp(car a,car b){
    return a.t<b.t;
}
int maxim(int a,int b){
    if(a>b)
    return a;
    return b;
}
int main(){
    f=fopen("carnati.in","r");
    g=fopen("carnati.out","w");
    fscanf(f,"%d%d",&n,&c);
    for(i=1;i<=n;i++){
        fscanf(f,"%d%d",&v[i].t,&v[i].p);
    }
    sort(v+1,v+n+1,cmp);
    v[0].t=v[1].t-1;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            d[j]=0;
            if(v[i].p<=v[j].p)
                d[j]=v[i].p;
            d[j]=maxim( d[j] - c, d[j-1] + d[j] - ( v[j].t - v[j-1].t ) *c );
            vmax=maxim(d[j],vmax);
        }
    }
    fprintf(g,"%d",vmax);




    fclose(f);
    fclose(g);
    return 0;
}