Pagini recente » Cod sursa (job #1436323) | Cod sursa (job #720923) | Cod sursa (job #3192981) | Cod sursa (job #1876506) | Cod sursa (job #3269752)
#include <fstream>
#include <queue>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
struct oaie {
int dist, puf;
bool operator < (const oaie &other) const {
return dist < other.dist;
}
};
vector<oaie> v;
int main() {
int n, x, l;
fin >> n >> x >> l;
for (int i = 1; i <= n; i++){
oaie o;
fin >> o.dist >> o.puf;
v.push_back(o);
}
int cnt = 0;
long long ans = 0;
priority_queue<int> pq;
sort(v.begin(), v.end());
for (int i = 0; i <= x / l; i++){
int dist_max = l * i;
while (cnt < n && v[cnt].dist <= dist_max){
pq.push(v[cnt].puf);
cnt++;
}
if (!pq.empty()) {
ans += pq.top();
pq.pop();
}
}
fout << ans;
return 0;
}