Pagini recente » Cod sursa (job #2773724) | Cod sursa (job #1273954) | Cod sursa (job #2585779) | Cod sursa (job #262313) | Cod sursa (job #3237430)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
struct oaie
{
int expirare,lana;
} v[100005];
priority_queue<int>oi;
bool cmp(oaie x, oaie y)
{
return x.expirare<y.expirare;
}
int main()
{
int n,x,l,dist;
long long int sol=0;
cin>>n>>x>>l;
for(int i=1; i<=n; i++)
{
cin>>dist>>v[i].lana;
v[i].expirare=(x-dist)/l;
}
sort(v+1,v+1+n,cmp);
int poz=0;
//sol+=v[n].lana;
for(int i=n; i>=1; i--)
{
if(i<n && v[i].expirare==v[i+1].expirare)
{
oi.push(v[i].lana);
continue;
}
while(!oi.empty() && v[i+1].expirare>v[i].expirare)
{
//cout<<sol<<'\n';
// cout<<v[i].expirare<<" "<<v[i].lana<<'\n';
v[i+1].expirare--;
sol+=oi.top();
oi.pop();
}
oi.push(v[i].lana);
} sol+=oi.top();
cout<<sol;
return 0;
}