Pagini recente » Rating Ciurea Daniel (Neamtzu21) | Cod sursa (job #3163432) | Cod sursa (job #865537) | Cod sursa (job #2943032) | Cod sursa (job #2776707)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
const int INF = (1 << 30), NMAX(100005), VMAX(1000000);;
using ll = long long;
using PII = pair<int, int>;
int cat[NMAX], fr[NMAX];
int main()
{
int n, x, l;
fin >> n >> x >> l;
vector<pair<int, int> > vec;
for(int i = 1; i <= n; ++i){
int d, c;
fin >> d >> c;
if(d <= x)
vec.push_back({((x - d) / l) + 1, c});
}
sort(vec.begin(), vec.end(), greater<PII>());
priority_queue<int> pq;
ll rez = 0;
int ind = 0;
for(int i = vec[0].first; i >= 1; --i){
while(ind < vec.size() && vec[ind].first == i)
pq.push(vec[ind].second), ++ind;
if(!pq.empty())
rez += pq.top(), pq.pop();
}
fout << rez << '\n';
return 0;
}