Pagini recente » Cod sursa (job #356085) | Cod sursa (job #1737772) | Cod sursa (job #2765809)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
int n, X, L, lung;
struct oaie {
int d, a;
};
oaie oi[100001];
pair<int, int> t[100001];
void read() {
int i;
ifstream f("lupu.in");
f >> n >> X >> L;
for (i = 1; i <= n; i++)
f >> oi[i].d >> oi[i].a;
f.close();
}
priority_queue<int> pq;
int ans;
void solve() {
int i, x, a;
for (i = 1; i <= n; i++)
if (oi[i].d <= X)
t[++lung] = {(X - oi[i].d) / L + 1, oi[i].a};
sort(t + 1, t + lung + 1);
i = lung, a = n - 1;
while (i >= 1) {
while(i >= 1 && a == t[i].first)
pq.push(t[i--].second);
a--;
if(!pq.empty()){
ans += pq.top();
pq.pop();
}
}
}
void output() {
ofstream g("lupu.out");
g << ans;
g.close();
}
int main() {
read();
solve();
output();
return 0;
}