Pagini recente » Cod sursa (job #1818066) | Cod sursa (job #2933874) | Cod sursa (job #3133729) | Cod sursa (job #2039950) | Cod sursa (job #2724768)
#include <fstream>
#include<queue>
#include<algorithm>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
priority_queue<int>v;
struct oi
{
int strat,lana;
}oaie[100001];
int d,n,x,l,nro,k;
long long sol;
bool cmp(oi x, oi y)
{
return x.strat>y.strat||(x.strat==y.strat&&x.lana>y.lana);
}
int main()
{
fin>>n>>x>>l;
for(int i=1;i<=n;i++)
{
fin>>d;
oaie[i].strat=(x-d)/l+1;
fin>>oaie[i].lana;
}
sort(oaie+1,oaie+n+1,cmp);
k=x/l+1;///nr straturi
nro=1;
for(int i=k;i>=1;i--)///parcurgem straturile
{
while(nro<=n&&oaie[nro].strat==i)
{
v.push(oaie[nro].lana);
nro++;
}
if(!v.empty())
sol+=v.top(),v.pop();
}
fout<<sol;
return 0;
}