Cod sursa(job #2927899)

Utilizator VladTZYVlad Tiganila VladTZY Data 21 octombrie 2022 19:22:31
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#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;
}