Pagini recente » Cod sursa (job #2342083) | Cod sursa (job #1409578) | Cod sursa (job #1425176) | Cod sursa (job #2399491) | Cod sursa (job #2927899)
#include <fstream>
#include <algorithm>
#include <vector>
#define NMAX 2005
#define INT_PAIR pair<int, int>
using namespace std;
ifstream f("carnati.in");
ofstream g("carnati.out");
int n, hCost, time1, cost, answer;
int dp[NMAX];
vector <INT_PAIR> v;
int main()
{
f >> n >> hCost;
for (int i = 1; i <= n; i++) {
f >> time1 >> cost;
v.push_back({time1, cost});
}
v.push_back({0, 0});
sort(v.begin(), v.end());
v[0].first = v[1].first - 1;
for (int i = 1; i <= n; i++) {
int maxVal = v[i].second;
for (int j = 1; j <= n; j++) {
int valNow = 0;
if (v[j].second >= maxVal)
valNow = maxVal;
dp[j] = max(valNow - hCost, dp[j - 1] + valNow - (v[j].first - v[j - 1].first) * hCost);
answer = max(dp[j], answer);
}
}
g << answer << "\n";
return 0;
}