Cod sursa(job #2287432)

Utilizator TooHappyMarchitan Teodor TooHappy Data 21 noiembrie 2018 21:17:15
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <bits/stdc++.h>

using namespace std;

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

int main() {
    ios::sync_with_stdio(false); in.tie(0); out.tie(0);
    
    int n, x ,l; in >> n >> x >> l;

    vector< pair< int, int > > v(n);
    for(int i = 0; i < n; ++i) {
        in >> v[i].first >> v[i].second;
    }
    sort(v.begin(), v.end());

    int idx = 0, r = x % l;

    multiset< int > mSet;
    for(int i = 0; i < n; ++i) {
        if(v[i].first <= r) {
            mSet.insert(-v[i].second);
            idx = i;
        } else {
            break;
        }
    }
    r = l;
    
    int ans = 0;
    if(!mSet.empty()) {
        ans += (-(*mSet.begin()));
        mSet.erase(mSet.begin());
    }

    for(int i = idx; i < n; ++i) {
        if(v[i].first < r) {
            mSet.insert(-v[i].second);
        } else {
            if(!mSet.empty()) {
                ans += (-(*mSet.begin()));
                mSet.erase(mSet.begin());

                r += l;
                --i;
            } else {
                r = (v[i].first / l) * l;
            }
        }
    }

    out << ans << "\n";

    in.close(); out.close();
 
    return 0;
}