Pagini recente » Cod sursa (job #636683) | Cod sursa (job #3209138) | Cod sursa (job #949515) | Cod sursa (job #1379729) | Cod sursa (job #3003798)
#include <fstream>
#include <queue>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
int N, X, L;
priority_queue<int, vector<int>, greater<int>> pq;
int main()
{
cin>>N>>X>>L;
vector<vector<int>> buckets(X/L+1);
for(int i=0;i<N;i++){
int dist, lana;
cin>>dist>>lana;
if(dist > X){
continue;
}
buckets[(X-dist)/L].push_back(lana);
}
for(int i=0;i<buckets.size();i++){
for(auto it: buckets[i]){
pq.push(it);
}
while(pq.size() > i+1){
pq.pop();
}
}
long long sum =0;
while(pq.size() > 0){
sum += pq.top();
pq.pop();
}
cout<<sum;
return 0;
}