Pagini recente » Cod sursa (job #763114) | Cod sursa (job #2944711) | Cod sursa (job #2342786) | Cod sursa (job #904023) | Cod sursa (job #2392859)
#include<stdio.h>
#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;
//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;
}