Cod sursa(job #2611620)

Utilizator MocalinnoMoca Andrei Catalin Mocalinno Data 7 mai 2020 10:58:30
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
#define DAU  ios::sync_with_stdio(false); fin.tie(0); fout.tie(0);
#define PLEC fin.close(); fout.close(); return 0;
#define timp first
#define bani second
using namespace std;
const string problem("carnati");
ifstream fin(problem + ".in");
ofstream fout(problem + ".out");
int n, c, last, curr, res;
int main() {
    DAU
    fin >> n >> c;
    vector<pair<int, int>> v(n + 1);
    unordered_set<int> preturi;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i].timp >> v[i].bani;
        preturi.insert(v[i].bani);
    }
    sort(v.begin(), v.end());
    for (const int& pret : preturi) {
        last = 0;
        for (int i = 1; i <= n; ++i) {
            curr = max(last - c * (v[i].timp - v[i-1].timp), 0);
            if (v[i].bani >= pret)
                curr += pret;
            res = max(res, curr);
            last = curr;
        }
    }
    fout << res - c;
    PLEC
}