Pagini recente » Cod sursa (job #2357679) | Cod sursa (job #1998762) | Cod sursa (job #2527259) | Cod sursa (job #2211263) | Cod sursa (job #599711)
Cod sursa(job #599711)
#include<fstream>
#include<algorithm>
using namespace std;
int n,C,profit[2010],sol;
struct Cumparator{int t,p;};
Cumparator a[2010];
inline bool Ordonare(const Cumparator A,const Cumparator B)
{
if(A.t==B.t)
return A.p>B.p;
return A.t<B.t;
}
inline int max(int a,int b)
{
if(a<b)
return b;
return a;
}
int main()
{
int i,j,pret;
ifstream fin("carnati.in");
fin>>n>>C;
for(i=1;i<=n;i++)
fin>>a[i].t>>a[i].p;
fin.close();
sort(a+1,a+n+1,Ordonare);
sol=0;
profit[0]=-1;
a[0].t=a[0].p=-1;
for(i=1;i<=n;i++) //pretul
{
pret=a[i].p;
for(j=1;j<=n;j++) //cumparatorul
{
if(a[j].p>=pret)
profit[j]=max(profit[j-1]-(a[j].t-a[j-1].t)*C+pret,pret-C);
else
profit[j]=max(profit[j-1]-(a[j].t-a[j-1].t)*C,-C);
sol=max(sol,profit[j]);
}
}
ofstream fout("carnati.out");
fout<<sol<<"\n";
fout.close();
return 0;
}