Pagini recente » Cod sursa (job #2722162) | Cod sursa (job #2472134) | Cod sursa (job #2446808) | Cod sursa (job #1533281) | Cod sursa (job #137567)
Cod sursa(job #137567)
#include<stdio.h>
struct magazin{
int max,p,cump;
};
magazin mag[2010];
struct cumpar{
int t,p;
};
cumpar nr[2010];
int main(){
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
int n,c,maxim,i,j;
scanf("%d%d",&n,&c);
for(i=0;i<n;++i)
scanf("%d%d",&nr[i].t,&nr[i].p);
maxim=-1000000000;
for(i=0;i<n;++i){
mag[i].max=nr[i].p-c;
mag[i].p=nr[i].p;
mag[i].cump=1;
if(mag[i].max>maxim)
maxim=mag[i].max;
for(j=i-1;j>=0;--j){
if(nr[i].p>mag[j].p){
if(mag[j].max+mag[j].p-c*(nr[i].t-nr[j].t+1)>mag[i].max){
mag[i].max=mag[j].max+mag[j].p-c*(nr[i].t-nr[j].t+1);
if(mag[j].cump>1)
mag[i].max+=c;
mag[i].cump=mag[j].cump+1;
mag[i].p=mag[j].p;
}
}
else{
if(mag[j].max+nr[i].p-c*(nr[i].t-nr[j].t+1)-mag[j].cump*(mag[j].p-nr[i].p)>mag[i].max){
mag[i].max=mag[j].p+nr[i].p-c*(nr[i].t-nr[j].t+1)-mag[j].cump*(mag[j].p-nr[i].p);
mag[i].p=nr[i].p;
mag[i].cump=mag[j].cump+1;
}
}
if(mag[i].max>maxim)
maxim=mag[i].max;
}
}
if(maxim<0)
printf("0\n");
else
printf("%d\n",maxim);
fclose(stdin);
fclose(stdout);
return 0;
}