Pagini recente » Cod sursa (job #95658) | Cod sursa (job #1877234) | Cod sursa (job #157382) | Cod sursa (job #1709805) | Cod sursa (job #553497)
Cod sursa(job #553497)
#include <fstream>
#include <queue>
using namespace std;
ifstream in ("lupu.in");
ofstream out ("lupu.out");
const int N = 1 << 20;
int n, x, l, sol, timp, lup;
pair <int, int> v[N];
priority_queue <int, vector <int>, greater <int> > heap;
void citire () {
in >> n >> x >> l;
for (int i = 1; i <= n; ++i) {
in >> v[i].first >> v[i].second;
v[i].first = -v[i].first;
}
}
void exe () {
sort (v + 1, v + n + 1);
for (int i = 1; i <= n; ++i) {
v[i].first = -v[i].first;
}
for (int i = 1; i <= n; ++i) {
if (timp * l + v[i].first <= x) {
heap.push (v[i].second);
sol += v[i].second;
++timp;
} else {
if (v[i].second > heap.top ()) {
sol -= heap.top ();
sol += v[i].second;
heap.pop ();
heap.push (v[i].second);
}
}
}
}
void afisare () {
out << sol << '\n';
}
int main () {
citire ();
exe ();
afisare ();
return 0;
}