Pagini recente » Cod sursa (job #1644245) | Cod sursa (job #1103602) | Cod sursa (job #1622444) | Cod sursa (job #1757218) | Cod sursa (job #431580)
Cod sursa(job #431580)
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
struct oaie
{
int dist,lana,timp;
};
oaie o[1<<17];
int n,x,l,d,a,j;
long long total;
priority_queue<int> H;
bool comp(const oaie &A,const oaie &B)
{
if(A.timp<B.timp) return false;
if(A.timp>B.timp) return true;
if(A.lana>B.lana) return true;
return false;
}
int main()
{
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%d%d%d",&n,&x,&l);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&d,&a);
if(d>x)
{
--i, --n;
continue;
}
o[i].dist=d;
o[i].lana=a;
o[i].timp=(x-d)/l+1;
}
sort(o+1,o+n+1,comp);
o[0].timp=o[1].timp;
for(int i=1;i<=n;i++)
{
if(o[i].timp!=o[i-1].timp)
{
total+=(long long)H.top();
H.pop();
}
H.push(o[i].lana);
}
total+=(long long)H.top();
H.pop();
printf("%lld",total);
return 0;
}