Pagini recente » Cod sursa (job #2249740) | Cod sursa (job #707400) | Cod sursa (job #1998754) | Cod sursa (job #678857) | Cod sursa (job #2392856)
#include<set>
#include<vector>
#include<algorithm>
using namespace std;
int N,X,L;
struct Cmp
{
bool operator ()(const pair<int,int> &a, const pair<int,int> &b)
{
if(a.first == b.first)
return a.second > b.second;
return a.first > b.first;
}
};
struct less_than_key
{
inline bool operator() (const pair<int,int> &a, const pair<int,int> &b)
{
if(a.first == b.first)
return a.second > b.second;
return a.first > b.first;
}
};
//multiset<pair<int,int>,Cmp> oite;
vector<pair<int,int>> oite;
long long blana(){
//multiset<pair<int,int>,Cmp>::iterator it;
//multiset<pair<int,int>,Cmp>::reverse_iterator rit;
vector<pair<int,int>>::iterator it;
long long B=0;
while(!oite.empty()){
it=oite.begin();
if((*it).second>X){
oite.erase(it);
continue;
}
else{
B=B+(*it).first;
oite.erase(it);
}
for(it=oite.begin(); it!=oite.end(); it++){
(*it).second+=L;
}
}
return B;
}
int main(){
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%d %d %d",&N,&X,&L);
int d,v;
for (int i = 0; i < N; i++) {
scanf("%d %d",&d,&v);
if(d<=X)
//oite.insert(make_pair(v,d));
oite.push_back(make_pair(v,d));
}
sort(oite.begin(),oite.end(),less_than_key());
long long result=blana();
printf("%lld\n",result);
return 0;
}