Cod sursa(job #2915372)

Utilizator VladNANegoita Vlad-Andrei VladNA Data 22 iulie 2022 15:30:54
Problema Lupul Urias si Rau Scor 88
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
#define NMAX 100000
#define INF 2e9

using namespace std;

ifstream in("lupu.in");
ofstream out("lupu.out");

int n, x, l;
pair <int, int> v[NMAX];

int main()
{
    in >> n >> x >> l;

    for (register int i = 0; i < n; ++i) {
        in >> v[i].first >> v[i].second;
        v[i].first = (l + x - v[i].first) / l;
    }

    sort(v, v + n);

    multiset <int> s;
    long long sum = 0;

    register int i = n - 1, prev = v[n - 1].first;
    while (i >= 0) {
        if (prev != v[i].first) {

            while (prev - v[i].first && !s.empty()) {
                auto it = s.begin();
                sum -= (*it);
                s.erase(it);
                --prev;
            }

            prev = v[i].first;
        }

        s.insert(-v[i].second);
        --i;
    }

    while (prev > 0 && !s.empty()) {
        auto it = s.begin();
        sum -= (*it);
        s.erase(it);
        --prev;
    }

    out << sum << '\n';
    return 0;
}