Pagini recente » Cod sursa (job #1342748) | Cod sursa (job #217792) | Cod sursa (job #1185251) | Cod sursa (job #2326558) | Cod sursa (job #925791)
Cod sursa(job #925791)
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
#define fs first
#define sc second
#define pb push_back
#define mp make_pair
using namespace std;
int N,X,L,a,b,maxim,ind;
long long rez;
vector<pair<int,int> > v;
priority_queue<int> pq;
int main()
{
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%d%d%d",&N,&X,&L);
for(int i=1;i<=N;++i)
{
scanf("%d%d",&a,&b);
if(a<=X)
{
a=(X-a)/L+1;
maxim = max(a,maxim);
// printf("%d %d\n",a,b);
v.pb(mp(a,b));
}
}
sort(v.begin(),v.end());
ind = N-1;
while(ind>=0)
{
while(v[ind].fs == maxim)
{
pq.push(v[ind].sc);
--ind;
if(ind<0)
break;
}
if(!pq.empty())
{
rez=rez+pq.top();
pq.pop();
}
--maxim;
}
printf("%lld",rez);
return 0;
}