Cod sursa(job #3342411)

Utilizator ZebraMorariu Radu Dimitri Zebra Data 24 februarie 2026 09:36:24
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <bits/stdc++.h>

using namespace std;

int main()
{
    freopen("lupu.in", "r", stdin);
    freopen("lupu.out", "w", stdout);

    ios_base::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);

    int n;
    long long x, l;
    cin >> n >> x >> l;

    // d + t * l <= x
    //==> t <= (x - d) / l

    vector<pair<long long,long long>> sheep;
    for(int i = 0; i < n; ++i)
    {
        long long d, a;
        cin >> d >> a;

        if(d > x)
            continue;

        long long t;
        if(l == 0)
            t = LLONG_MAX;
        else
            t = (x - d) / l;

         if(t >= 0)
            sheep.push_back(make_pair(t, a));
    }

    sort(sheep.begin(), sheep.end());

    priority_queue<long long, vector<long long>, greater<long long>> pq;

    for(auto &s : sheep)
    {
        long long deadline = s.first;
        long long lana = s.second;

        pq.push(lana);

        if((long long)pq.size() > deadline + 1)
            pq.pop();

    }

    long long ans = 0;
    while(!pq.empty())
    {
        ans += pq.top();
        pq.pop();
    }

    cout << ans;

    return 0;
}