Pagini recente » Cod sursa (job #2698162) | Cod sursa (job #106456) | Cod sursa (job #305389) | Cod sursa (job #285291) | Cod sursa (job #1536606)
#include<stdio.h>
#include<algorithm>
#include<vector>
#define d first
#define b second
#include<queue>
using namespace std;
pair <long long , long long>a[100001];
vector<long long>mat[1 << 20];
priority_queue<long long>pq;
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 (long long i=1 ; i<=n ; ++i)
{
scanf("%lld %lld" , &a[i].d , &a[i].b);
if(x >= a[i].d)
mat[(x-a[i].d)/l+1].push_back(i);
}
long long ans=0;
for(long long i=n ; i>=1 ; --i)
{
for(long long j=0 ; j<mat[i].size() ; ++j)
pq.push(a[mat[i][j]].b);
if(! pq.empty())
{
ans+=pq.top();
pq.pop();
}
}
printf("%lld" , ans);
return 0;
}