Cod sursa(job #2287117)

Utilizator sandupetrascoPetrasco Sandu sandupetrasco Data 21 noiembrie 2018 15:22:24
Problema Lupul Urias si Rau Scor 96
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
#define ll long long
#define PII pair < int , int >
#define MOD 1000000007
 
using namespace std;
 
int n, m, l;
ll rs;
 
struct my {
    int pos, val;
};
 
my a[100100];
multiset < int > S;
 
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
 
    ifstream cin("lupu.in");
    ofstream cout("lupu.out");
 
    cin >> n >> m >> l;

    for (int i = 1; i <= n; i++) {
        cin >> a[i].pos >> a[i].val;
    }

    sort(a + 1, a + n + 1, [&](my a, my b){ return a.pos < b.pos; });
    
    int r = m % l, j = 1;
    for (int i = r; i <= m; i += l) {
        while (j <= n && a[j].pos <= i) {
            S.insert(a[j].val), j++;
        }

        if (S.size()) rs += *S.rbegin(), S.erase(S.find(*S.rbegin()));
    }
    
    cout << rs;
    return 0;
}