Pagini recente » Cod sursa (job #1676406) | Cod sursa (job #1207789) | Cod sursa (job #614735) | Cod sursa (job #279690) | Cod sursa (job #1823911)
#include <cstdio>
#include <algorithm>
#include <queue>
#define NMax 100000
#define ll long long
using namespace std;
priority_queue<int> Q;
pair<int, int> v[NMax+1];
int main(){
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
int i,j,N,M,X,L,a,b;
long long ans = 0;
scanf("%d %d %d",&N,&X,&L);
for(M = 0, i = 1; i <= N; ++i)
{
scanf("%d %d",&a,&b);
if(a <= X && b) v[++M] = make_pair(a,b);
}
N = M;
sort(v+1,v+N+1);
for(a = 1, i = N; i >= 1; ++a)
{
for(j = i; j >= 1 && v[j].first+1LL*a*L>X; --j) Q.push( v[j].second );
if( Q.empty() ) Q.push( v[j--].second );
ans = ans + Q.top();
while( !Q.empty() ) Q.pop();
i = j;
}
printf("%lld\n",ans);
return 0;
}