Pagini recente » Cod sursa (job #575921) | Cod sursa (job #1204073) | Cod sursa (job #2908918) | Cod sursa (job #1364534) | Cod sursa (job #2774389)
#include <bits/stdc++.h>
#define X first
#define Y second
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
long long maxim;
int n,x,m,l,a,i,b;
pair<int, int> v[100010];
priority_queue<int> s;
int main(){
fin>>n>>x>>l;
for(i=1;i<=n;i++){
fin>>a>>b;
if(x>=a){
v[++m].X=(x-a)/l+1;
v[m].Y=b;
}
}
sort(v+1,v+m+1);
for(i=v[m].X;i>=1;i--){
while(m>=1&&v[m].X==i){
s.push(v[m].Y);
m--;
}
if(!s.empty()){
maxim+=s.top();
s.pop();
}
}
fout<<maxim;
return 0;
}