Pagini recente » Cod sursa (job #145419) | Cod sursa (job #1714168) | Cod sursa (job #1526579) | Cod sursa (job #453065) | Cod sursa (job #1296360)
#include <fstream>
#include <algorithm>
#define dim 100003
#define x first
#define y second
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
pair <long long,long long> v[dim];
long long h[dim],n,i,j,X,L,a[dim],pp,nr,sol;
void insert(int x){
a[++nr]=x;
int c=nr,p=c/2;
while(p>=1 && a[p]<a[c]){
swap(a[p],a[c]);
c=p;
p/=2;
}
}
void down(int k){
a[k]=a[nr--];
int p=k,c=2*p;
while(c<=n){
if(c+1<=n && a[c+1]<a[c])
c++;
if(a[p]<a[c]){
swap(a[c],a[p]);
p=c;
c*=2;
}
else
break;
}
}
int main(){
fin>>n>>X>>L;
for(i=1;i<=n;i++)
fin>>v[i].x>>v[i].y;
sort(v+1,v+n+1);
for(i=1;i<=n && v[i].x<=X;++pp){
while(i<=n && v[i].x<=pp*L)
insert(v[i].y),i++;
if(nr)
sol+=a[1],down(1);
}
fout<<sol;
fin.close();fout.close();
return 0;
}