Pagini recente » Cod sursa (job #1333997) | Cod sursa (job #861449) | Cod sursa (job #980008) | Cod sursa (job #2477971) | Cod sursa (job #2272816)
#include <iostream>
#include<cstdio>
#define val second
#define i first
#include<algorithm>
#include<queue>
using namespace std;
const int N=1000005;
pair<int,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,"%d%d",&v[i].i,&v[i].val);
v[i].i=(x-v[i].i)/l;
}
sort(v+1,v+n+1);
int val=x/l;
i=n;
while(val>=0){
while(i>0 && v[i].i>=val){
h.push(v[i].val);
i--;
}
if(!h.empty()){
s+=(long long)h.top();
h.pop();
}
val--;
}
fprintf(fout,"%lld",s);
return 0;
}