Cod sursa(job #3141071)

Utilizator UengineDavid Enachescu Uengine Data 12 iulie 2023 10:38:03
Problema Lupul Urias si Rau Scor 72
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

ifstream cin("lupu.in");
ofstream cout("lupu.out");

struct oaie{
    int dist;
    int blana;
    bool operator <(const oaie &other)const{
        return dist < other.dist;
    }
};

vector <oaie> oi;
priority_queue <int> pq;

int main() {
    int n, x, l;
    long long sum = 0;
    cin >> n >> x >> l;
    for(int i = 0; i < n; i++){
        oaie coaie;
        cin >> coaie.dist >> coaie.blana;
        oi.push_back(coaie);
    }
    sort(oi.begin(), oi.end());
    int nivel = (x - oi[0].dist) / l;

    for(int i = 0; i < n; i++) {
        int candidateNivel = (x - oi[i].dist) / l;
        if (candidateNivel < nivel) {
            for(int j = 0; j < nivel - candidateNivel; j++) {
                sum += pq.top();
                pq.pop();
            }
            nivel = (x - oi[i].dist) / l;  
        }
        pq.push(oi[i].blana);
    }
    sum += pq.top();
//    pq.pop();
    cout << sum;
    return 0;
}