Pagini recente » Cod sursa (job #665045) | Cod sursa (job #2192259) | Cod sursa (job #2797680) | Cod sursa (job #1087560) | Cod sursa (job #2839792)
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
struct ura
{
long long t,p;
}v[100005];
bool cmp(ura a,ura b)
{
return a.t<b.t;
}
priority_queue<long long, vector<long long>, greater<long long> > q;
int main()
{
long long n,ans=0,x,l,sum=0;
cin>>n>>x>>l;
for(int i=1;i<=n;i++)
{
cin>>v[i].t>>v[i].p;
if(v[i].t<=x)
v[i].t=(x-v[i].t)/l+1;
}
sort(v+1,v+n+1,cmp);
for(int i=1;i<=n;i++)
{
//cout<<v[i].t<<" ";
if(v[i].t<=x)
{if(v[i].t>q.size())
q.push(v[i].p);
else if(v[i].t<=q.size())
{
long long first=q.top();
ans+=min(v[i].p,first);
if(v[i].p>first)
{
q.pop();
q.push(v[i].p);
}
}}
}
for(int i=1;i<=n;i++)
sum+=v[i].p;
cout<<sum-ans;
return 0;
}