Pagini recente » Cod sursa (job #2587969) | Cod sursa (job #2609915) | Cod sursa (job #1200231) | Cod sursa (job #2403310) | Cod sursa (job #2558784)
#include <bits/stdc++.h>
std::priority_queue< int >pq;
struct oaie {
int dist, lana;
} o[100000];
int mx( int a, int b ) {
return a > b ? a : b;
}
int compar( oaie A, oaie B ) {
return A.dist > B.dist;
}
int main() {
FILE *fin, *fout;
int n, x, l, i, d, a, dm = 0, j, s = 0;
fin = fopen( "lupu.in", "r" );
fout = fopen( "lupu.out", "w" );
fscanf( fin, "%d%d%d", &n, &x, &l );
for ( i = 0; i < n; i++ ) {
fscanf( fin, "%d%d", &d, &a );
o[i].dist = ( x - d ) / l + 1;
dm = mx( dm, o[i].dist );
o[i].lana = a;
}
std::sort( o, o + n, compar );
j = 0;
for ( i = dm; i > 0; i-- ) {
while ( j < n && o[j].dist == i ) {
pq.push( o[j].lana );
j++;
}
if ( !pq.empty() ) {
s += pq.top();
pq.pop();
}
}
fprintf( fout, "%d", s );
fclose( fin );
fclose( fout );
return 0;
}