Pagini recente » Cod sursa (job #2313093) | Cod sursa (job #2229148) | Cod sursa (job #337907) | Cod sursa (job #2173796) | Cod sursa (job #2276910)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
#include <vector>
const int NMAX = 1e5 + 5;
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
priority_queue < int > heap;
pair < int, int > oi[NMAX];
int n, x, l, c;
uint64_t s;
int main(){
fin >> n >> x >> l;
for(int i = 0; i < n; i++){
fin >> oi[i].first >> oi[i].second;
oi[i].first = (x - oi[i].first) / l;
}
fin.close();
sort(oi, oi + n);
int ture = x / l;
n--;
while(ture >= 0){
while(n >= 0 and oi[n].first >= ture){
heap.push(oi[n].second);
n--;
}
if(!heap.empty()){
s += heap.top();
heap.pop();
}
ture--;
}
fout << s << '\n';
fout.close();
return 0;
}