Cod sursa(job #3347166)

Utilizator BuzdiBuzdugan Rares Andrei Buzdi Data 15 martie 2026 19:03:00
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
#define ll long long

using namespace std;

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

const int NMAX = 1e5;

int n, x, l, ind;
ll answer;
multiset<int> s;
pair<int, int> v[NMAX + 1];

int main() {
    fin >> n >> x >> l;
    for(int i = 1; i <= n; i++) {
        int d, c;
        fin >> d >> c;
        if(x - d >= 0) {
            int k = (x - d) / l;
            v[++ind] = {k, c};
        }
    }

    sort(v + 1, v + ind + 1);
    for(int i = 1; i <= ind; i++) {
        s.insert(v[i].second);
    }
    int i = 1;
    while(i <= ind) {
        if(!s.empty()) {
            answer += *prev(s.end());
            s.erase(prev(s.end()));
        }

        int j = i;
        while(j <= ind && v[j].first == v[i].first) {
            if(s.count(v[j].second)) {
                s.erase(s.find(v[j].second));
            }
            j++;
        }
        i = j;
    }
    fout << answer << '\n';
    return 0;
}