Pagini recente » Cod sursa (job #2002996) | Cod sursa (job #2775525) | Cod sursa (job #83855) | Cod sursa (job #1003204) | Cod sursa (job #1036921)
#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;
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;
}
sort(a, a+n, comps);
for(int i=0;i<n;i++)
{
while(a[i].t==a[i+1].t && i<n-1)
codita.push(a[i++]);
codita.push(a[i]);
s+=codita.top().m;
codita.pop();
}
printf("%lld", s);
return 0;
}