Pagini recente » Cod sursa (job #2009014) | Cod sursa (job #1947746) | Cod sursa (job #227047) | Cod sursa (job #1976589) | Cod sursa (job #2928053)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("carnati.in");
ofstream fout("carnati.out");
int main()
{
cin.rdbuf(fin.rdbuf());
cout.rdbuf(fout.rdbuf());
long long n, k;
cin >> n >> k;
vector<pair<long long, long long>> vec(n + 1);
for (long long i = 1; i <= n; i++)
{
long long x1, x2;
cin >> x1 >> x2;
vec[i] = make_pair(x1, x2);
}
sort(vec.begin() + 1, vec.end());
long long maxFin = 0;
for (long long i = 1; i <= n; i++)
{
long long maxPrice = vec[i].second;
pair<long long, long long> best{0, 0};
long long j;
for (j = 1; j <= n; j++)
if (vec[j].second >= maxPrice)
{
best = make_pair(vec[j].first, maxPrice - 13);
break;
}
for (j = j + 1; j <= n; j++)
if (vec[j].second >= maxPrice)
{
long long nextOption = maxPrice - (vec[j].first - best.first) * k;
if (nextOption + best.second < maxPrice && nextOption > 0)
best = make_pair(vec[j].first, maxPrice - 13);
else if (nextOption > 0)
best = make_pair(vec[j].first, best.second + nextOption);
}
if (best.second > maxFin)
maxFin = best.second;
}
cout << maxFin;
return 0;
}