Cod sursa(job #2407506)

Utilizator mariusn01Marius Nicoli mariusn01 Data 16 aprilie 2019 22:08:10
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <set>
#include <algorithm>

using namespace std;
long long sol;
int N, X, L, k, i, d, a;
multiset<int> S;
pair<int, int> t[100010];
int main () {
    ifstream fin ("lupu.in");
    ofstream fout("lupu.out");

    fin>>N>>X>>L;
    for (i=1;i<=N;i++) {
        fin>>d>>a;
        if (d <= X) {
            t[++k].first = 1 + (X-d)/L;
            t[k].second = a;
        }
    }
    sort(t+1, t+k+1);
    for (i=t[k].first;i>=1;i--) {
        while (k >= 1 && t[k].first == i) {
            S.insert(t[k].second);
            k--;
        }
        if (S.size()) {
            sol += *S.rbegin();
            S.erase(--S.end());
        }
    }
    fout<<sol;
    return 0;
}