Pagini recente » Cod sursa (job #2727161) | Borderou de evaluare (job #223721) | Cod sursa (job #882782) | Cod sursa (job #788017) | Cod sursa (job #997357)
Cod sursa(job #997357)
#include <fstream>
#include <algorithm>
using namespace std;
int maxim(int a,int b)
{
if(a>b)
return a;
return b;
}
struct elem
{
int t;
int p;
}v[2005];
bool operator<(const elem &a,const elem &b)
{
if(a.t<=b.t)
return 1;
return 0;
}
int main()
{
ifstream cin("carnati.in");
ofstream cout("carnati.out");
int n=0,c,i,j,din[2005],maximul=0;
cin>>n>>c;
for(i=0;i<n;i++)
cin>>v[i].t>>v[i].p;
sort(v,v+n);
for(i=0;i<n;i++)
{
din[n-1]=(v[n-1].p>=v[i].p)*v[i].p-c;
if(din[n-1]>maximul)
maximul=din[n-1];
for(j=n-2;j>=0;j--)
{
din[j]=(v[j].p>=v[i].p)*v[i].p+maxim(-c,din[j+1]-c*(v[j+1].t-v[j].t));
if(din[j]>maximul)
maximul=din[j];
}
}
cout<<maximul<<'\n';
cin.close();
cout.close();
//system("PAUSE");
return 0;
}