Pagini recente » Cod sursa (job #2033170) | Cod sursa (job #2891098) | Cod sursa (job #1894774) | Cod sursa (job #794747) | Cod sursa (job #3267556)
#include <bits/stdc++.h>
#define ll long long
#define int ll
#define ld long double
#define pii pair<int, int>
#define tpl tuple<int, int, int>
#define piv pair<int, vector<int>>
#define eb emplace_back
#define oo INT_MAX / 2
#define OO LLONG_MAX / 2
using namespace std;
const string fn("lupu");
ifstream in(fn + ".in");
ofstream out(fn + ".out");
#define cin in
#define cout out
int N, X, L;
map<int, vector<int>> M;
priority_queue<int> pqans;
void solve()
{
cin >> N >> X >> L;
/// assert(L > 0);
for (int i = 1; i <= N; i++)
{
int d, a;
cin >> d >> a;
int r = 0;
r = (X - d) / L;
M[r].eb(a);
/// cout<<a<<' '<<d<<' '<<r<<'\n';
}
int timer = M.rbegin()->first, ans = 0;
auto x=M.rbegin();
while (timer >= 0 and x!=M.rend())
{
while(x!=M.rend() and x->first>=timer)
{
auto pq = x->second;
while (pq.size())
pqans.emplace(pq.back()), pq.pop_back();
x++;
}
if(pqans.size())
ans += pqans.top(), pqans.pop();
timer--;
}
cout << ans;
}
signed main()
{
int q = 1;
/// cin >> q;
while (q--)
solve();
return 0;
}