Pagini recente » Cod sursa (job #2174044) | Cod sursa (job #1624772) | Clasament noobmania | Cod sursa (job #1488337) | Cod sursa (job #3125843)
#include <fstream>
#include <algorithm>
#include <queue>
#define int long long
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
const int MAX = 1e5 + 1;
int n , x , l;
struct oaie{ int p , d; };
bool cmp( oaie a , oaie b ){ return a.d > b.d;}
struct crit{
bool operator()( int a , int b ){
return a > b;
}
};
oaie v[MAX];
priority_queue <int,vector<int>,crit> pq;
signed main(){
cin >> n >> x >> l;
for(int i = 1 ; i <= n ; i++){
cin >> v[i].d >> v[i].p;
}
sort(v+1,v+1+n,cmp);
int total_value = 0;
int lupul = 0;
for(int i = 1 ; i <= n ; i++){
if(lupul + v[i].d <= x){
lupul += l;
total_value += v[i].p;
pq.push(v[i].p);
}else if(!pq.empty() && lupul + v[i].d - l <= x){
if(pq.top() >= v[i].p) continue;
total_value -= pq.top();
pq.pop();
pq.push(v[i].p);
total_value += v[i].p;
}
}
cout << total_value;
return 0;
}