Pagini recente » Cod sursa (job #1755218) | Cod sursa (job #757643) | Cod sursa (job #1276428) | Cod sursa (job #1768754) | Cod sursa (job #1744090)
#include <cstdio>
#include <algorithm>
#define MAXN 2000
struct Client{
int timp;
int pret;
};
Client V[MAXN+1];
bool cmp(Client a,Client b){
return a.timp<b.timp;
}
int profit[MAXN+1],start[MAXN+1];
int main(){
FILE*fi,*fout;
int i,n,c,j,x,max_profit;
fi=fopen("carnati.in" ,"r");
fout=fopen("carnati.out" ,"w");
fscanf(fi,"%d %d " ,&n,&c);
for(i=1;i<=n;i++)
fscanf(fi,"%d %d " ,&V[i].timp,&V[i].pret);
std::sort(V+1,V+n+1,cmp);
max_profit=0;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
x=0;
if(V[j].pret>=V[i].pret)
x=V[i].pret;
if(profit[j-1]-(V[j].timp-start[j-1]+1)*c+x>x-c){
profit[j]=profit[j-1]+x;
start[j]=start[j-1];
}
else{
profit[j]=x;
start[j]=V[j].timp;
}
if(max_profit<profit[j]-(V[j].timp-start[j]+1)*c)
max_profit=profit[j]-(V[j].timp-start[j]+1)*c;
}
}
fprintf(fout,"%d" ,max_profit);
fclose(fi);
fclose(fout);
return 0;
}