Pagini recente » Cod sursa (job #2611352) | Cod sursa (job #2535115) | Cod sursa (job #450995) | Cod sursa (job #2062451) | Cod sursa (job #2823490)
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
class Oaie{
public:
int distInit;
int cantitateLana;
int poz;
};
class Compare{
public:
bool operator()(Oaie a,Oaie b){
if (a.cantitateLana == b.cantitateLana)
return a.distInit > b.distInit;
return a.cantitateLana<b.cantitateLana;
}
};
int n,x,l;///n:nr oi,x:distanta maxima lup oi,l:distanta de departare oi lup
vector<Oaie> v;
void read(){
cin>>n>>x>>l;
v.resize(n+1,{0,0,0});
for(int i=1;i<=n;i++){
cin>>v[i].distInit>>v[i].cantitateLana;
v[i].poz=i;
}
}
void solve(){
priority_queue<Oaie,vector<Oaie>,Compare> Q(v.begin()+1,v.end());
long long int res=0;
int distDeFugit=0;
while(!Q.empty()){
if(Q.top().distInit+distDeFugit<=x){
res+=Q.top().cantitateLana;
distDeFugit+=l;
}
Q.pop();
}
cout<<res;
}
int main() {
read();
solve();
return 0;
}