Pagini recente » Cod sursa (job #2521371) | Cod sursa (job #1149892) | Cod sursa (job #1655931) | Cod sursa (job #2493306) | Cod sursa (job #1355712)
#include<bits/stdc++.h>
using namespace std;
struct cell
{
int c,poz;
};
struct kkt
{
int val,cnt,mn,scad;
};
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.poz<B.poz;
}
int main()
{
int i,j,aux,mx=-(1<<30);
fin>>n>>job;
for (i=1;i<=n;i++) fin>>a[i].poz>>a[i].c;
sort(a+1,a+n+1,cmp);
mx=dp[1].val=a[1].c-job;dp[1].scad=job;dp[1].cnt=1;
dp[1].mn=a[1].c;
for (i=2;i<=n;i++)
{
dp[i].val=a[i].c-job;
dp[i].cnt=1;dp[i].scad=job;
dp[i].mn=a[i].c;
for (j=i-1;j>=1;j--)
{
aux=min(a[i].c,dp[j].mn)*(dp[j].cnt+1)-dp[j].scad-(a[i].poz-a[j].poz)*job;
if (aux>dp[i].val)
{
dp[i].val=aux;
dp[i].scad=dp[j].scad+(a[i].poz-a[j].poz)*job;
dp[i].cnt=dp[j].cnt+1;
dp[i].mn=min(a[i].c,dp[j].mn);
}
}
mx=max(mx,dp[i].val);
}
fout<<mx<<"\n";
return 0;
}