Pagini recente » Cod sursa (job #2269404) | Cod sursa (job #1811590) | Cod sursa (job #618668) | Cod sursa (job #502341) | Cod sursa (job #2704375)
#include <fstream>
#include<algorithm>
using namespace std;
ifstream cin("carnati.in");
ofstream cout("carnati.out");
struct ura
{
int h,pret;
}v[2001];
long long cost[2001];
bool cmp (ura a, ura b)
{
if(a.h < b.h) return true;
return false;
}
int main()
{
long long s=0,nr,fin=-2000000000000000;
int n,C,i,j;
cin>>n>>C;
for(i=1;i<=n;i++)
cin>>v[i].h>>v[i].pret;
sort(v+1,v+n+1,cmp);
for(j=1;j<=n;j++)
{
nr=v[j].pret;
for(i=1;i<=n;i++)
{
if(v[i].pret<nr) cost[i]=-(v[i].h-v[i-1].h)*C;
else cost[i]=nr-(v[i].h-v[i-1].h)*C;
}
s=0;
int inc=1,incf;
long long maxi=-2000000000000000,k;
for(i=1;i<=n;i++)
{
if(s<0)
{
inc=i;
s=0;
}
s=s+cost[i];
if(inc==1)
{
if(s>maxi)
{
maxi=s;
incf=inc;
}
}
else
{
k=(v[inc].h-v[inc-1].h-1)*C;
if(s+k>maxi)
{
maxi=s+k;
incf=inc;
}
}
}
if(maxi>fin)
fin=maxi;
}
cout<<fin;
return 0;
}