Pagini recente » Cod sursa (job #55041) | Cod sursa (job #1826221) | Cod sursa (job #817236) | Cod sursa (job #1126878) | Cod sursa (job #923225)
Cod sursa(job #923225)
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
vector<int> v[100005];
struct Str
{
int c,d;
} a[100005];
priority_queue<int> q;
int main()
{
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
int n,i,x,l;
scanf("%d%d%d",&n,&x,&l);
for(i=1;i<=n;i++)
{
scanf("%d%d",&a[i].d,&a[i].c);
///a[i].t = ziua maxima in care poate fi luata i:
if(a[i].d<=x)
v[((x-a[i].d)/l+1)>n?n:((x-a[i].d)/l+1)].push_back(i);
}
int ans=0;
for(int t=n;t>=1;t--)
{
for(int i=0;i<(int)v[t].size();i++)
q.push(a[v[t][i]].c);
if(!q.empty())
ans+=q.top(),
q.pop();
}
printf("%d\n",ans);
return 0;
}