Pagini recente » Cod sursa (job #394990) | Cod sursa (job #69467) | Cod sursa (job #320780) | Cod sursa (job #3255209) | Cod sursa (job #181980)
Cod sursa(job #181980)
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
struct ab{
int a,b;
};
ab v[2001];
int best[2001];
int comp(const ab &a,const ab &b){
if(a.a<b.a) return 1;
return 0;
}
int maxim(int x, int y){
if(x>y) return x;
return y;
}
int main(){
int i,n,c,j,poz,max=0,s;
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
scanf("%d%d",&n,&c);
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].a,&v[i].b);
v[0].a=v[0].b=-10;
sort(v+1,v+n+1,comp);
for(i=1;i<=n;i++){
s=0;
poz=1;
for(j=1;j<=n;j++){
if(v[j].b>=v[i].b) best[j]=maxim(best[j-1]-(v[j].a-v[j-1].a)*c+v[i].b,v[i].b-c);
else best[j]=maxim(best[j-1]-(v[j].a-v[j-1].a)*c,-c);
if(best[j]>max) max=best[j];
best[j-1]=0;
}
}
printf("%d",max);
}