Cod sursa(job #2858472)

Utilizator Mihai_EduardMihai Eduard Mihai_Eduard Data 27 februarie 2022 17:01:33
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
const int NMAX=100005;

int N, X, L;
ll sol;
pair<int,int> v[NMAX];
bool comp(pair<int,int> A, pair<int,int> B){
    return A.first>B.first;
}
priority_queue<int> q;

int main()
{
    fin>>N>>X>>L;
    for(int i=1;i<=N;i++){
        fin>>v[i].first>>v[i].second;
        if(v[i].first>X)
            v[i].first=0;
        else
            v[i].first=(X-v[i].first)/L+1;
    }
    sort(v+1,v+N+1,comp);
    for(int k=v[1].first,i=1;k>=1 and i<=N;k--){
        while(v[i].first==k){
            q.push(v[i].second);
            i++;
        }
        if(!q.empty()){
            sol+=1LL*q.top();
            q.pop();
        }
    }

    fout<<sol;

    fin.close();
    fout.close();
    return 0;
}