Pagini recente » Cod sursa (job #446958) | Cod sursa (job #658179) | Cod sursa (job #947808) | Cod sursa (job #2315206) | Cod sursa (job #1429123)
/*
Keep It Simple!
*/
#include <fstream>
#include <vector>
#include <list>
#include <stack>
#include <string>
#include <cmath>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
#define ll long long
#define mp make_pair
#define fi first
#define se second
#define pb push_back
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int kMaxN = 1e5 + 5;
pii T[kMaxN];
priority_queue<int> que;
void Solve()
{
int N, X, L, Tmax = 0;
long long ans = 0;
cin >> N >> X >> L;
for (int i = 1, x; i <= N; ++i) {
cin >> x >> T[i].second;
T[i].first = (X-x) / L + 1;
}
sort(T + 1, T+N+1, greater<pii>());
Tmax = T[1].first;
for (int idx = 1; idx <= N && Tmax; --Tmax) {
// add to queue.
while (T[idx].first == Tmax && idx <= N) {
que.push(T[idx].second);
++idx;
}
// get maximum and add to sol.
ans += que.top();
que.pop();
}
cout << ans << '\n';
}
int main()
{
Solve();
return 0;
}