Cod sursa(job #2506577)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 8 decembrie 2019 14:00:56
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <iostream>
#include <algorithm>
#include <set>
#define dist first
#define puf second
using namespace std;

ifstream fin("lupu.in");
ofstream fout("lupu.out");

long long n,i,j,x,l,cnt,u,sol;
pair <long long,long long> v[100001];
multiset <long long> m;

int main(){
    fin>>n>>x>>l;
    for(i=1;i<=n;i++){
        fin>>v[i].dist>>v[i].puf;
        ///m.insert(-v[i].puf);
    }
    sort(v+1,v+n+1);

//    for(i=1;i<=n;i++)
//        cout<<v[i].dist<<"-"<<v[i].puf<<"\n";

    cnt=x/l+1;
//    cout<<cnt<<"\n\n";

    u=1;
    for(i=cnt;i>=0;i--){
        while(v[u].dist+i*l<=x && u<=n){
            m.insert(-v[u].puf);
            u++;
        }

        if(!m.empty()){
            sol-= *m.begin() ;
//            cout<<-*m.begin()<<" ";
            m.erase(m.begin());
        }
    }

    fout<<sol;

    return 0;
}