Cod sursa(job #542662)
#include <cstdio>
#include <algorithm>
using namespace std;
struct nod
{long long d,l;} v[100002];
int cmp(const nod &x,const nod &y)
{
if (x.d!=y.d) return x.d<=y.d; else
return x.l>=y.l;
}
int main()
{
int n,i,nr=0;
long long x,l,d=0,sol=0;
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%d %lld %lld",&n,&x,&l);
for (i=1;i<=n;++i)
{
scanf("%lld %lld",&v[nr+1].d,&v[nr+1].l);
if (v[nr+1].d<=x) ++nr,v[nr].d=(x-v[nr].d)/l;
}
sort(v+1,v+nr+1,cmp);
for (i=1;i<=nr;++i)
{
if (v[i].d>=d)
sol+=v[i].l,++d;
}
printf("%lld",sol);
return 0;
}