Pagini recente » Rating Andrei Mihu (cashinmypocket) | Cod sursa (job #1841361) | Cod sursa (job #119822) | Cod sursa (job #3180389) | Cod sursa (job #2506577)
#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;
}