Pagini recente » Cod sursa (job #3192512) | Cod sursa (job #869989) | Cod sursa (job #1448800) | Cod sursa (job #1489629) | Cod sursa (job #2927898)
#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, time, cost, answer;
int dp[NMAX];
vector <INT_PAIR> v;
int main()
{
f >> n >> hCost;
for (int i = 1; i <= n; i++) {
f >> time >> cost;
v.push_back({time, 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;
}