Cod sursa(job #3327971)

Utilizator RaresAnghelAnghel Rares Mihai RaresAnghel Data 5 decembrie 2025 18:44:01
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;
const string nume="lupu";
ifstream f(nume+".in");
ofstream g(nume+".out");
struct oaie
{
    long long x, nr;
};
bool comp(const oaie &a, const oaie &b)
{
    if (a.x == b.x)
        return a.nr > b.nr;
    return a.x < b.x;
}
int main()
{
    long long n, x, l;
    f >> n >> x >> l;

    vector<oaie> v(n);

    for (int i = 0; i < n; i++)
    {
        long long d, a;
        f >> d >> a;
        if (d > x)
            continue;
        long long maxK = (x - d) / l + 1;
        if (maxK > 0) v.push_back({maxK, a});
    }

    stable_sort(v.begin(), v.end(),comp);
    priority_queue<long long, vector<long long>, greater<long long>> pq;
    long long sum = 0;

    for (auto &s : v)
    {
        pq.push(s.nr);
        sum += s.nr;
        if ((long long)pq.size() > s.x)
        {
            sum -= pq.top();
            pq.pop();
        }
    }

    g << sum;
    return 0;
}