Pagini recente » Cod sursa (job #3172880) | Cod sursa (job #1076330) | Cod sursa (job #29892) | Cod sursa (job #1039857) | Cod sursa (job #2925466)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("carnati.in");
ofstream fout("carnati.out");
int dp[2005];
int n,cmin,k;
int pret;
pair <int,int> v[2005];
int maxim=0;
bool cmp(pair <int,int> a,pair <int,int> b)
{
if(a.first!=b.first)
return a.first<b.first;
return a.second<b.second;
}
int main()
{
fin>>n>>pret;
for(int i=1;i<=n;i++)
{
int x,y;
fin>>x>>y;
++k;
v[k].first=x;
v[k].second=y;
}
sort(v+1,v+k+1,cmp);
for(int i=1;i<=k;i++)
{
int cost = v[i].second;
int v2[2005]={0};
int q=0;
for(int j=1;j<=k;j++)
{
if(v[j].second>=cost)
v2[++q]=v[j].first;
}
for(int j=1;j<=q;j++)
{
dp[j]=max(cost-pret,dp[j-1]+cost-(v2[j]-v2[j-1])*pret);
maxim=max(maxim,dp[j]);
}
}
fout<<maxim;
}