Pagini recente » Cod sursa (job #2518170) | Cod sursa (job #1166432) | Cod sursa (job #870017) | Cod sursa (job #1200881) | Cod sursa (job #2750357)
//#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;
}