Pagini recente » Cod sursa (job #2676708) | Cod sursa (job #2811882) | Cod sursa (job #911295) | Cod sursa (job #2695517) | Cod sursa (job #1355619)
#include<bits/stdc++.h>
using namespace std;
struct cell
{
int c,poz;
};
struct kkt
{
int st,dr,val,cnt;
};
ifstream fin("carnati.in");
ofstream fout("carnati.out");
const int NMAX=2005;
int n,job,c;
cell a[NMAX];
kkt dp[NMAX];
inline bool cmp(const cell A,const cell B)
{
return A.c>B.c;
}
int main()
{
int i,j,aux,mx=-(1<<30),c,d;
fin>>n>>job;
for (i=1;i<=n;i++) fin>>a[i].poz>>a[i].c;
sort(a+1,a+n+1,cmp);
dp[1].st=dp[1].dr=a[1].poz;
mx=dp[1].val=a[1].c-job;dp[1].cnt=1;
for (i=2;i<=n;i++)
{
dp[i].st=dp[i].dr=a[i].poz;
dp[i].val=a[i].c-job;
dp[i].cnt=1;
for (j=i-1;j>=1;j--)
{
c=min(a[i].poz,dp[j].st);d=max(a[i].poz,dp[j].dr);
aux=a[i].c*(dp[j].cnt+1)-(d-c+1)*job;
if (aux>dp[i].val)
{
dp[i].val=aux;
dp[i].cnt=dp[j].cnt+1;
dp[i].st=c;dp[i].dr=d;
}
}
mx=max(mx,dp[i].val);
}
fout<<mx<<"\n";
return 0;
}