Pagini recente » Cod sursa (job #2362157) | Cod sursa (job #1498843) | Cod sursa (job #307832) | Cod sursa (job #1517690) | Cod sursa (job #1254176)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("carnati.in");
ofstream out("carnati.out");
struct om{
long long pret;
long long timp;
};
om v[20005];
long long n,c,sol[20005],best = -10000000;
bool comp(om a,om b)
{
return a.timp<=b.timp;
}
void citire()
{
in>>n>>c;
for(int i = 1; i <= n ; i++)
in>>v[i].timp>>v[i].pret;
in.close();
}
void solve()
{
v[0].timp = v[0].pret = -10;
sort(v,v+n+1,comp);
int i,j,p;
for(i = 1; i <= n ; i++){
p = v[i].pret;
for(j = 1 ; j <= n ; j++)
if(v[j].pret >= p){
sol[j] = max(sol[j-1]-(v[j].timp-v[j-1].timp)*c+p,p-c);
if(sol[j] < 0 )
sol[j] = max(sol[j-1]-(v[j].timp-v[j-1].timp)*c,(long long)0);
best = max(best,sol[j]);
}
else
sol[j] = max(sol[j-1]-(v[j].timp-v[j-1].timp)*c,(long long)0);
}
out<<best;
out.close();
}
int main()
{
citire();
solve();
return 0;
}