Pagini recente » Cod sursa (job #2158826) | Cod sursa (job #2671250) | Cod sursa (job #726918) | Cod sursa (job #1564555) | Cod sursa (job #1355808)
#include<bits/stdc++.h>
using namespace std;
struct cell
{
int c,poz;
};
ifstream fin("carnati.in");
ofstream fout("carnati.out");
const int NMAX=2005;
int n,job,dp[2][NMAX];
cell a[NMAX];
inline bool cmp(const cell A,const cell B)
{
return A.poz<B.poz;
}
int main()
{
int i,j,aux,mx=-(1<<30),s;
fin>>n>>job;
for (i=1;i<=n;i++) fin>>a[i].poz>>a[i].c;
sort(a+1,a+n+1,cmp);
for (i=1;i<=n;i++)
{
dp[0][i]=a[i].c-job;
//stanga
for (j=i-1,s=a[i].c;j>=1;j--)
{
if (a[j].c>=a[i].c) s+=a[i].c;
dp[0][i]=max(dp[0][i],s-(a[i].poz-a[j].poz+1)*job);
}
//dreapta
for (j=i+1,s=0;j<=n;j++)
{
if (a[j].c>=a[i].c) s+=a[i].c;
dp[1][i]=max(dp[1][i],s-(a[j].poz-a[i].poz)*job);
}
mx=max(mx,dp[0][i]+dp[1][i]);
}
fout<<mx<<"\n";
return 0;
}