Pagini recente » Cod sursa (job #3286683) | Cod sursa (job #2609008) | Cod sursa (job #2414829) | Cod sursa (job #2177316) | Cod sursa (job #3283775)
#include <bits/stdc++.h>
using namespace std;
#define MAX_N 100001
struct oaie{
int d, lana, t;
};
oaie o[MAX_N];
int t[MAX_N];
int cmp( oaie a, oaie b ){
if( a.t == b.t )
return a.lana > b.lana;
return a.t < b.t;
}
priority_queue<int> pq;
int main(){
ifstream cin( "lupu.in" );
ofstream cout( "lupu.out" );
int n, i, x, l, s, timp;
cin >> n >> x >> l;
for( i = 1; i <= n; i++ ){
cin >> o[i].d >> o[i].lana;
o[i].t = ( x - o[i].d ) / l;
}
sort( o, o + n, cmp );
//for( i = 0; i < n; i++ )
//cout << o[i].d << " " << o[i].lana << " " << o[i].t << "\n";
/* i = 0;
for( timp = 0; timp <= x / l; timp++ ){
int maxx = 0;
while( i < n && o[i].t <= timp ){
if( o[i].lana > maxx )
maxx = o[i].lana;
i++;
}
s += maxx;
}*/
s = 0;
for( i = n; i >= 1; i-- ){
if( o[i].t <= x / l )
pq.push( o[i].lana );
if( o[i].t != o[i - 1].t ){
s += pq.top();
//cout << pq.top() << " ";
pq.pop();
}
}
cout << s;
return 0;
}