Pagini recente » Cod sursa (job #2720981) | Cod sursa (job #1307289) | Cod sursa (job #129157) | Cod sursa (job #2491837) | Cod sursa (job #2392885)
#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;
vector<pair<int,int>>::iterator begin,end;
long long B=0;
begin=oite.begin();
end=oite.end();
it=oite.begin();
int k=0;
while(begin!=end){
if(((*begin).second+k*L)>X){
begin++;
continue;
}
else{
B=B+(*begin).first;
begin++;
}
k++;
}
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;
}