Pagini recente » Cod sursa (job #2750007) | Cod sursa (job #997984) | Cod sursa (job #185877) | Cod sursa (job #2136976) | Cod sursa (job #1456670)
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
#define Nmax 100002
#define dist first
#define lana second
FILE *f = fopen ( "lupu.in", "r" );
FILE *g = fopen ( "lupu.out", "w" );
priority_queue < int > Heap;
pair < int, int > Oaie[Nmax];
int main(){
int N, X, L;
long long sol = 0;
fscanf ( f, "%d%d%d", &N, &X, &L );
for ( int i = 1; i <= N; ++i )
fscanf ( f, "%d%d", &Oaie[i].dist, &Oaie[i].lana );
sort ( Oaie + 1, Oaie + N + 1 );
int ind = 1, pas = ( X - Oaie[1].dist ) / L ;
while ( ind <= N && pas >= 0 ){
while ( ( X - Oaie[ind].dist ) / L == pas ){
Heap.push ( Oaie[ind].lana );
ind++;
}
if ( !Heap.empty() ){
sol += Heap.top();
Heap.pop();
}
pas--;
}
fprintf ( g, "%lld", sol );
return 0;
}