Pagini recente » Cod sursa (job #1818029) | Cod sursa (job #320787) | Cod sursa (job #144267) | Cod sursa (job #1635710) | Cod sursa (job #141962)
Cod sursa(job #141962)
using namespace std;
#include<cstdio>
#include<algorithm>
#define Nm 2048
#define f first
#define s second
#define max(a,b) ((a)>(b)?(a):(b))
int L[Nm],R[Nm],n,c,ans;
pair<int,int> A[Nm],B[Nm];
void read()
{
int i;
freopen("carnati.in","r",stdin);
scanf("%d%d",&n,&c);
for(i=0;i<n;++i)
scanf("%d%d",&A[i].f,&A[i].s);
}
void solve()
{
int i,j,m;
sort(A,A+n);
for(i=0;i<n;++i)
{
for(m=j=0;j<n;++j)
if(A[i].s<=A[j].s)
B[++m]=A[j];
L[1]=0;
for(j=2;j<=m;++j)
L[j]=max(0,L[j-1]+A[i].s-(B[j].f-B[j-1].f)*c);
R[m]=0;
for(j=m-1;j;--j)
R[j]=max(0,R[j+1]+A[i].s-(B[j+1].f-B[j].f)*c);
for(j=1;j<=m;++j)
ans=max(ans,L[j]+R[j]-c+A[i].s);
}
}
void write()
{
freopen("carnati.out","w",stdout);
printf("%d\n",ans);
}
int main()
{
read();
solve();
write();
return 0;
}