Pagini recente » Cod sursa (job #3283699) | Cod sursa (job #3177367) | Cod sursa (job #1654862) | Cod sursa (job #2268315) | Cod sursa (job #3267552)
#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, priority_queue<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].emplace(a);
/// cout<<a<<' '<<d<<' '<<r<<'\n';
}
int timer = M.rbegin()->first, ans = 0;
for (auto x=M.rbegin();x!=M.rend();x++)
{
auto pq = x->second;
while (pq.size())
pqans.emplace(pq.top()), pq.pop();
while (timer>=0 and timer >= x->first and pqans.size())
ans += pqans.top(), pqans.pop(), timer--;
}
while(timer>=0 and pqans.size())
ans+=pqans.top(),pqans.pop(),timer--;
cout << ans;
}
signed main()
{
int q = 1;
/// cin >> q;
while (q--)
solve();
return 0;
}