Cod sursa(job #3125864)

Utilizator TudorBordeaBordea Tudor TudorBordea Data 4 mai 2023 18:19:54
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>

using namespace std;

const int N = 1e5;

int main()
{
    ifstream in("lupu.in");
    ofstream out("lupu.out");
    int n, x, l;
    in >> n >> x >> l;
    vector <pair <int, int>> v(n);
    for (int i = 0; i < n; i++)
    {
        in >> v[i].first >> v[i].second;
    }
    sort(v.begin(), v.end(), greater <pair <int, int>>());
    priority_queue <int, vector<int>, greater<int>> h;
    int t_c = 0;
    long long l_totala = 0;
    for (auto p: v)
    {
        if (p.first + (long long)t_c * l <= x)
        {
            h.push(p.second);
            l_totala += p.second;
            t_c++;
        }
        else
        {
            if (!h.empty() && p.second > h.top())
            {
                l_totala += p.second - h.top();
                h.pop();
                h.push(p.second);
            }
        }
    }
    out << l_totala << "\n";
    in.close();
    out.close();
    return 0;
}