Pagini recente » Cod sursa (job #1562295) | Cod sursa (job #1211343) | Cod sursa (job #292229) | Cod sursa (job #1213887) | Cod sursa (job #2272813)
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
const int N=100005;
pair<long long,int> v[N];
priority_queue<int> h;
long long s;
int main()
{
FILE*fin,*fout;
fin=fopen("lupu.in","r");
fout=fopen("lupu.out","w");
int n,i,x,l;
fscanf(fin,"%d%d%d",&n,&x,&l);
for(i=1;i<=n;i++){
fscanf(fin,"%lld%d",&v[i].first,&v[i].second);
v[i].first=(long long)(x-v[i].first)/l+1;
}
sort(v+1,v+n+1);
long long val,j;
i=n;
h.push(v[i].second);
while(i>0 && v[i].first==v[i-1].first){
i--;
h.push(v[i].second);
}
i--;
while(i>0){
val=v[i+1].first;
j=val-v[i].first;
while(!h.empty() && j>0){
s+=(long long)h.top();
h.pop();
j--;
}
h.push(v[i].second);
while(i>0 && v[i].first==v[i-1].first){
i--;
h.push(v[i].second);
}
i--;
}
j=v[1].first;
while(!h.empty() && j>0){
s+=(long long)h.top();
h.pop();
j--;
}
fprintf(fout,"%lld",s);
return 0;
}