Pagini recente » Cod sursa (job #1719867) | Cod sursa (job #2428807) | Monitorul de evaluare | Cod sursa (job #994872) | Cod sursa (job #909992)
Cod sursa(job #909992)
#include<fstream>
#include<algorithm>
#define NMAX 2010
using namespace std;
ifstream f("carnati.in");
ofstream g("carnati.out");
struct omustean
{
int t;
long long p;
}a[NMAX];
int n;
long long best[NMAX], C;
void Citeste()
{
int i;
f>>n>>C;
for (i=1; i<=n; ++i)
f>>a[i].t>>a[i].p;
}
int cmp(omustean A, omustean B)
{
return A.t<B.t;
}
void Solve()
{
int i, j;
long long val, sol=-1;
sort(a+1, a+n+1, cmp);
for (i=1; i<=n; ++i)
{
val=a[i].p;
for (j=1; j<=n; ++j)
{
if (val<=a[j].p) best[j]=max(best[j-1]+val-C*(a[j].t-a[j-1].t), val-C);
else best[j]=max(best[j-1]-C*(a[j].t-a[j-1].t), -C);
sol=max(best[j], sol);
}
}
g<<sol<<"\n";
}
int main()
{
Citeste();
Solve();
f.close();
g.close();
return 0;
}