Pagini recente » Istoria paginii runda/29_august/clasament | Cod sursa (job #1033109) | Cod sursa (job #961220) | Cod sursa (job #1350214) | Cod sursa (job #1243222)
#include<cstdio>
#include<algorithm>
#include<queue>
#define NMAX 100001
using namespace std;
int H[NMAX*2+5],d[NMAX],a[NMAX];
priority_queue<int>q;
int n,l,dist,lg,i;
long long sum;
struct lup
{
int val,ord;
}T[NMAX];
int cmp(lup r,lup p)
{
if (r.val<p.val) return 0;
return 1;
}
int main()
{
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%d%d%d",&n,&dist,&l);
for (i=1;i<=n;++i)
{
scanf("%d%d",&d[i],&a[i]);
if (d[i]<=dist) {T[i].val=(dist-d[i])/l+1,T[i].ord=i;}
}
sort(T+1,T+n+1,cmp);
int Max=T[1].val;
i=1;
for (int k=Max;k>0;--k)
{
while (i<=n && T[i].val==k)
{
q.push(a[T[i].ord]);
++i;
}
if (!q.empty()){sum+=q.top();q.pop();}
}
printf("%lld\n",sum);
return 0;
}