Pagini recente » Cod sursa (job #409868) | Cod sursa (job #2009376) | Cod sursa (job #1299469) | Cod sursa (job #772258) | Cod sursa (job #2072644)
#include <cstdio>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
FILE * in = fopen("lupu.in","r");
FILE * out = fopen("lupu.out","w");
vector < pair<long long,long long> > v;
struct cmp2
{
bool operator () (const int &a,const int &b)
{
return a>b;
}
};
long long n,x,l,s=0;
inline bool cmp(pair<int,int> a, pair<int,int> b)
{
if(a.first == b.first)
return a.second>b.second;
return a.first>b.first;
}
priority_queue <long long,vector<long long>,cmp2> heap;
int main()
{
fscanf(in,"%lld%lld%lld",&n,&l,&x);
for(int i=1; i<=n; i++)
{
long long x,y;
fscanf(in,"%lld%lld",&x,&y);
v.push_back({x,y});
}
sort(v.begin(),v.end(),cmp);
for(int i=0;i<v.size();i++)
{
if(v[i].first<=l)
{
if(v[i].first+x*(heap.size())<=l)
{
s+=v[i].second;
heap.push(v[i].second);
}
else
{
heap.push(v[i].second);
s+=v[i].second;
s-=heap.top();
heap.pop();
}
}
}
fprintf(out,"%lld",s);
return 0;
}