Cod sursa(job #3358330)

Utilizator serban19serban colhon serban19 Data 16 iunie 2026 11:52:22
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>

using namespace std;

struct Oaie
{
    long long deadline;
    long long lana;
};

bool cmp(Oaie a, Oaie b)
{
    return a.deadline < b.deadline;
}

int main()
{
    ifstream in("lupu.in");
    ofstream out("lupu.out");

    long long N, X, L;
    in >> N >> X >> L;

    vector<Oaie> v;

    for (long long i = 0; i < N; i++)
    {
        long long D, A;
        in >> D >> A;

        if (D <= X)
        {
            Oaie o;
            o.deadline = (X - D) / L;
            o.lana = A;
            v.push_back(o);
        }
    }

    sort(v.begin(), v.end(), cmp);

    priority_queue<long long> heap;

    long long suma = 0;

    int p = (int)v.size() - 1;

    long long timp_max = -1;

    if (!v.empty())
        timp_max = v.back().deadline;

    for (long long t = timp_max; t >= 0; t--)
    {
        while (p >= 0 && v[p].deadline >= t)
        {
            heap.push(v[p].lana);
            p--;
        }

        if (!heap.empty())
        {
            suma += heap.top();
            heap.pop();
        }
    }

    out << suma;

    return 0;
}