Pagini recente » Cod sursa (job #551200) | Cod sursa (job #3234473) | Cod sursa (job #1613300) | Cod sursa (job #718490) | Cod sursa (job #1833282)
#include<bits/stdc++.h>
using namespace std;
int n,x,l,d,a,timp,maxt;
long long sol;
pair<int,int> v[100005];
bool cmp(pair<int,int> a,pair<int,int> b)
{
if(a.first>b.first) return 1;
return 0;
}
typedef struct tip
{
int oaie;
};
bool operator<(const tip& a,const tip& b)
{
return v[a.oaie].second<v[b.oaie].second;
}
priority_queue<tip> q;
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",&d,&a);
timp=1+((x-d)/l);
v[i]=make_pair(timp,a);
}
sort(v+1,v+n+1,cmp);
while(n>0 && v[n].first<=0) n--;
maxt=v[1].first;
int x=1;
for(int i=maxt;i>=1;i--)
{
while(x<=n && v[x].first>=i)
{
q.push({x});
x++;
}
sol=sol+1LL*v[q.top().oaie].second;
q.pop();
}
printf("%lld\n",sol);
return 0;
}