Cod sursa(job #2840485)

Utilizator VipioanaMirea Oana Teodora Vipioana Data 27 ianuarie 2022 21:22:57
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
const int N=1e5+1;
int n,x,l;
long long lana;
pair <int,int> v[N];
priority_queue <int> p;


bool cmp(pair<int,int> x, pair<int,int> y)
{
    return (x.first>y.first);
}

int main()
{
    cin>>n>>x>>l;
    for(int i=1; i<=n; i++)
        cin>>v[i].first>>v[i].second;
    sort(v+1,v+n+1,cmp);
    int tp=0;
    for(int i=1; i<=n; i++){
        long long dist=v[i].first+(long long)tp*l;
        if(dist<=x){
            p.push(-v[i].second);
            tp++;
            lana+=v[i].second;
        }else
        if(!p.empty() && v[i].second>-p.top()){
            lana+=v[i].second+p.top();
            p.pop();
            p.push(-v[i].second);
        }
    }
    cout<<lana;
    return 0;
}