Pagini recente » Cod sursa (job #1853722) | Cod sursa (job #969387) | Cod sursa (job #2735581) | Cod sursa (job #177203) | Cod sursa (job #2286860)
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
using namespace std;
ifstream in("lupu.in");
ofstream out("lupu.out");
int n, vf;
ll x, l, ans, add, a, b;
pair <ll, ll> st[100100];
set <pair <ll, ll> > h;
int main() {
in >> n >> x >> l;
for (int i = 1; i <= n; i++) {
in >> a >> b;
ll can = (x - a) / l;
if (can >= 0)
st[++vf] = {-b, can};
}
sort(st + 1, st + vf + 1);
h.insert({0, INT_MAX});
for (int i = 1; i <= vf; i++) {
ll v = st[i].se;
if ((*h.begin()).fi > v)
continue;
auto it = h.upper_bound({v, 0});
it--;
auto seg = *it;
h.erase(it);
ans -= st[i].fi;
if (v > seg.fi)
h.insert({seg.fi, v - 1});
if (v + 1 <= seg.se)
h.insert({v + 1, seg.se});
}
out << ans;
return 0;
}