Cod sursa(job #3157695)

Utilizator matei123Biciusca Matei matei123 Data 16 octombrie 2023 17:00:22
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
#define NMAX 100000
using namespace std;

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

inline bool mycmp(pair <long long, long long> a, pair <long long, long long> b) {
    return a.first > b.first;
}

int main() {
    long long n, m, x, l, sol;
    priority_queue <long long> pq;
    pair <long long, long long> v[NMAX+1000];

    fin >> n >> x >> l;
    for(long long a, b, i=1; i<=n; i++) {
        fin >> a >> b;

        if(a <= x) {
            v[++m].first = (x - a) / l + 1;
            v[m].second = b;
        }
    }

    n = m;
    sort(v+1, v+n+1, mycmp);

    long long i=1;
    while(i <= n) {
        pq.push(v[i].second);

        while(v[i].first == v[i+1].first) {
            pq.push(v[i+1].second);
            i++;
        }

        i++;
        for(long long j=1; j<=v[i-1].first-v[i].first; j++)
            if(!pq.empty()) {
                long long val = pq.top();

                pq.pop();
                sol += val;
            }
    }

    fout << sol << '\n';

    fout.close();
    return 0;
}