Pagini recente » Cod sursa (job #1405056) | Cod sursa (job #2005672) | Cod sursa (job #1765984) | Monitorul de evaluare | Cod sursa (job #1934233)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
priority_queue<int> q;
pair<int, int> v[100005];
int n,m,x,i,j,t,l,a,b,lim;
long long ans;
int main()
{
ifstream f("lupu.in");
ofstream g("lupu.out");
f>>n>>x>>l;
for(lim=200001,m=0,i=1; i<=n; i++)
{
f>>a>>b;
if(a<=x&&b)
{
if((x-a)/l>=lim)
{
ans=ans+b;
lim++;
}
else
{
if((x-a)/l>=200001) a=200000;
else a=(x-a)/l;
m++;
v[m]=make_pair(a,b);
}
}
}
n=m;
sort(v+1,v+n+1);
for(i=n, t=v[n].first; t>=0; t--)
{
for(; i>=1&&v[i].first==t; i--)
q.push(v[i].second);
if(!q.empty())
{
ans=ans+q.top();
q.pop();
}
}
g<<ans<<'\n';
f.close(); g.close();
return 0;
}