Cod sursa(job #2444343)

Utilizator IoanaDraganescuIoana Draganescu IoanaDraganescu Data 31 iulie 2019 12:05:58
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>

using namespace std;

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

struct oaie{
    int zona, lana;
}v[100005];
priority_queue <int> q;
int n, x, l;

void read(){
    fin >> n >> x >> l;
    for (int i = 1; i <= n; i++){
        int d;
        fin >> d >> v[i].lana;
        v[i].zona = (x - d) / l;
    }
}

int compare(oaie a, oaie b){
    return a.zona > b.zona;
}

int main(){
    read();
    sort(v + 1, v + n + 1, compare);
    int ind = 1,;
    long long sol = 0;
    for (int i = x / l; i >= 0; i--){
        while (ind <= n && v[ind].zona == i){
            q.push(v[ind].lana);
            ind++;
        }
        if (!q.empty()){
            sol += q.top();
            q.pop();
        }
    }
    fout << sol << '\n';
    return 0;
}