Cod sursa(job #2913621)

Utilizator divadddDavid Curca divaddd Data 15 iulie 2022 15:38:26
Problema Lupul Urias si Rau Scor 88
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
vector<pair<int, int>> v;
multiset<int> s;
int n,x,l,d,val;
long long ans;
multiset<int>::iterator it;

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

int main()
{
    fin >> n >> x >> l;
    for(int i = 1; i <= n; i++){
        fin >> d >> val;
        v.push_back({(x-d)/l, val});
    }
    sort(v.begin(), v.end());
    int i = v.size()-1;
    for (int t = v[v.size()-1].first; t >= 0; t--) {
        while (i >= 0 && v[i].first >= t) {
            s.insert(v[i].second);
            i--;
        }
        if (!s.empty()) {
            it = s.end();
            it--;
            ans += *it;
            s.erase(it);
        }
    }
    fout << ans;
    return 0;
}