Cod sursa(job #2750359)

Utilizator NashikAndrei Feodorov Nashik Data 10 mai 2021 21:56:13
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
//#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
priority_queue <int> pq;
//pair<int,int> v[100005];
//int d[100005],n,x,l,per[100005];
pair<int,int> v[100005];
int calc(int a,int dist,int prog){
    if(dist<a){
        return -1;
    }
    return (dist-a)/prog;
}
bool ms(pair<int,int> a,pair<int,int> b){
    return a.second<b.second;
}
int main()
{
    int n,x,l;
    cin>>n>>x>>l;
    for(int i=1;i<=n;i++){
        cin>>v[i].second>>v[i].first;
        v[i].second=calc(v[i].second,x,l);
        //cout<<v[i].first<<" "<<v[i].second<<"\n";
    }
    sort(v+1,v+n+1,ms);
    long long sum=0;
    for(int i=1;i<=n;i++){
        if(v[i].second==-1)
            continue;
        if(pq.size()<=v[i].second){
            pq.push(-v[i].first);
            sum+=v[i].first;
        }
        else{
            if(-pq.top()<v[i].first){
                sum-=-pq.top();
                pq.pop();
                pq.push(-v[i].first);
                sum+=v[i].first;
            }
        }
    }
    cout<<sum;
    return 0;
}
/*
10 5 10
5 0
5 5
5 10
5 15
5 20
5 5
5 5
5 5
5 5
5 5
*/