Pagini recente » Cod sursa (job #1524110) | Cod sursa (job #2879640) | Cod sursa (job #18713) | Cod sursa (job #3171593) | Cod sursa (job #2703588)
#include <fstream>
#include<algorithm>
using namespace std;
ifstream cin("carnati.in");
ofstream cout("carnati.out");
struct ura
{
int ora,pret;
};
ura v[2001];
long long cost[2001];
bool cmp (ura a, ura b)
{
if(a.ora < b.ora)
return true;
return false;
}
int main()
{
long long profit,p,s;
int n,C,w,i;
cin>>n>>C;
for(i=1;i<=n;i++)
cin>>v[i].ora>>v[i].pret;
sort(v+1,v+n+1,cmp);
profit=-2000000000000000;
for(w=1;w<=n;w++)
{
p=v[w].pret;
for(i=1;i<=n;i++)
if(v[i].pret<p)
if(i==1)
cost[i]=-C;
else
cost[i]=-(v[i].ora-v[i-1].ora) *C;
else
if(i==1)
cost[i]=p-C;
else
cost[i]=p-(v[i].ora-v[i-1].ora) *C;
s=0;int inc=1,incf;
long long maxi=-2000000000000000;
for(i=1;i<=n;i++)
{
if(s<0)
{
inc=i;
s=0;
}
s+=cost[i];
if(s>maxi)
{
maxi=s;
incf=inc;
}
}
if(incf==1)
{
}
else
maxi+=1LL*(v[incf].ora-v[incf-1].ora-1)*C;
if(maxi>profit)
profit=maxi;
}
cout<<profit;
return 0;
}