Pagini recente » Cod sursa (job #2295154) | Cod sursa (job #1318163) | Cod sursa (job #1817683) | Cod sursa (job #393739) | Cod sursa (job #1239974)
#include<fstream>
#include<queue>
#include<algorithm>
using namespace std;
ifstream fin( "lupu.in" );
ofstream fout( "lupu.out" );
typedef long long i64;
const int nmax = 100000;
struct oaie{ i64 d, a; } v[ nmax + 1 ];
bool cmp( oaie x, oaie y ) {
return ( x.d < y.d );
}
priority_queue <i64> h;
int main() {
i64 n, l, x, sol, ii;
fin >> n >> x >> l;
for( int i = 0; i < n; ++ i ) {
fin >> v[ i ].d >> v[ i ].a;
v[ i ].d = ( x - v[ i ].d ) / l + 1; // numarul de ture a.i. oaia i e ok
}
sort( v, v + n, cmp );
sol = 0; ii = n - 1;
for( int t = v[ ii ].d; t > 0; -- t ) {
while ( ii > 0 && v[ ii ].d == t ) {
h.push( v[ ii ].a );
-- ii;
}
if ( !h.empty() ) {
sol += h.top();
h.pop();
} else if ( ii > 0 ) {
t = v[ ii ].d + 1;
}
}
fout << sol << '\n';
fin.close();
fout.close();
return 0;
}