Pagini recente » Cod sursa (job #2533806) | Cod sursa (job #710692) | Cod sursa (job #2542628) | Cod sursa (job #3272651) | Cod sursa (job #1969698)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <queue>
using namespace std;
const int N = 1e5 + 5 ;
int noOi , step , jump ;
struct Oaie{
int val , time ;
};
Oaie v [ N ];
bool cmp ( Oaie a , Oaie b ){
return a.time > b.time ;
}
priority_queue < int > que ;
int main(){
int i , dist , wool ;
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%d %d %d",&noOi , &jump , &step );
for ( i = 0 ; i < noOi ; i++ ){
scanf("%d%d", &dist , &wool );
v [ i ].val = wool ;
v [ i ].time = ( jump - dist )/step ;
if ( dist > jump ){
v [ i ].time = -1 ;
}
}
sort ( v , v + noOi , cmp );
int vcr = 0 ;
long long sol = 0 ;
for ( i = v [ 0 ].time ; i >= 0 ; i-- ){
while ( vcr < noOi && v [ vcr ].time == i ){
que.push( v [ vcr ].val );
vcr ++ ;
}
if ( !que.empty() ){
sol += 1LL * que.top();
que.pop();
}
}
printf("%I64d",sol);
return 0;
}