Pagini recente » Cod sursa (job #3132554) | Cod sursa (job #141622) | Cod sursa (job #3241701) | Cod sursa (job #3038605) | Cod sursa (job #1586862)
#include<bits/stdc++.h>
using namespace std;
struct el
{
int c,poz;
};
ifstream fin("carnati.in");
ofstream fout("carnati.out");
const int NMAX=2005;
int n,job,dp[2][NMAX];
el a[NMAX];
inline bool cmp(const el A,const el 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;
}