Pagini recente » Cod sursa (job #1473964) | Cod sursa (job #506944) | Cod sursa (job #2411439) | Cod sursa (job #2096584) | Cod sursa (job #1036928)
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
long long n, x, l;
struct oaie
{
long long t, m;
};
oaie a[100001];
struct comp
{
bool operator()(const oaie &a, const oaie &b)
{
if(a.m<=b.m)
return 1;
return 0;
};
};
priority_queue<oaie, vector<oaie>, comp>codita;
bool comps(oaie a, oaie b)
{
if(a.t>b.t || (a.t==b.t && a.m>=b.m))
return 1;
return 0;
}
int main()
{
freopen("lupu.in", "r", stdin);
freopen("lupu.out", "w", stdout);
scanf("%lld%lld%lld", &n, &x, &l);
long long s=0, tmax=-1, j=0;
for(int i=0;i<n;i++)
{
scanf("%lld%lld", &a[i].t, &a[i].m);
a[i].t=(x-a[i].t)/l+1;if(a[i].t>tmax)tmax=a[i].t;
}
sort(a, a+n, comps);
for(int i=tmax;i>=1;i--)
{
while(a[j].t==i && j<n)
codita.push(a[j++]);
s+=codita.top().m;
codita.pop();
}
printf("%lld", s);
return 0;
}