Pagini recente » Istoria paginii utilizator/petricat | Rating Ignat Emanuel Claudiu (EmanuelClaudiu) | Cod sursa (job #993224) | Cod sursa (job #1765633) | Cod sursa (job #922990)
Cod sursa(job #922990)
#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;
}