Pagini recente » Cod sursa (job #395449) | Cod sursa (job #11834) | Cod sursa (job #3162751) | Cod sursa (job #2748440) | Cod sursa (job #2393157)
#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 begin,end;
long long B=0;
begin=oite.begin();
end=oite.end();
int pas=0;
while(begin!=end){
B=B+(*begin).second;
begin++;
while(begin!=end && (*begin).first==pas){
begin++;
}
pas++;
}
return B;
}
int main(){
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%d %d %d",&N,&X,&L);
int d,v,t;
for (int i = 0; i < N; i++) {
scanf("%d %d",&d,&v);
if(d<=X){
//oite.insert(make_pair(v,d));
t=(X-d)/L;
oite.push_back(make_pair(t,v));
}
}
sort(oite.begin(),oite.end(),less_than_key());
long long result=blana();
printf("%lld\n",result);
return 0;
}