Cod sursa(job #2974604)

Utilizator IoanMihaiIoan Mihai IoanMihai Data 4 februarie 2023 11:31:17
Problema Lupul Urias si Rau Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
const int NMAX = 100005;
int n, x, l, dist, lg, nr;
pair<int, int> v[NMAX];
multiset<int> mul;
bool comp(pair<int,int> a, pair<int,int> b)
{
    return a.first < b.first;
}
int main()
{
    fin >> n >> x >> l;
    int ans = 0;
    for (int i=1;i<=n;i++){
        fin >> dist >> lg;
        v[i] = {dist, lg};
        if (dist <= x) {
            ans += lg;
        }
    }
    if (x == 0){
        fout << ans << '\n';
        return 0;
    }
    ans = 0;
    sort(v+1, v+n+1, comp);
    int i = 1, lim = x%l;
    while(lim <= x){
        for ( ;i<=n && v[i].first <= lim;i ++){
            mul.insert(v[i].second);
        }
        if (!mul.empty()){
            multiset<int>::iterator it = mul.end();
            --it;
            ans += *it;
            mul.erase(it);
        }
        lim += l;
    }
    fout << ans << '\n';
    return 0;
}