Pagini recente » Cod sursa (job #1405033) | Cod sursa (job #2071165) | Cod sursa (job #1666922) | Cod sursa (job #1841132) | Cod sursa (job #1536597)
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#define d first
#define b second
#define NMAX 100007
using namespace std;
pair < long long, long long > a[NMAX];
vector < long long > v[1 << 20 + 7];
priority_queue<long long> q;
long long n, x, l;
int main(){
freopen("lupu.in", "r", stdin);
freopen("lupu.out", "w", stdout);
scanf("%lld %lld %lld", &n, &x, &l);
for(int i = 1; i <= n; ++i){
scanf("%lld %lld", &a[i].d, &a[i].b);
if(x >= a[i].d)
v[(x - a[i].d) / l + 1].push_back(i);
}
long long Ans = 0;
for(int i = n; i >= 1; --i){
for(int j = 0; j < v[i].size(); ++j)
q.push(a[v[i][j]].b);
if(! q.empty()){
Ans += q.top();
q.pop();
}
}
printf("%lld", Ans);
return 0;
}