Pagini recente » Cod sursa (job #2045458) | Istoria paginii runda/winner5/clasament | Cod sursa (job #1270848) | Istoria paginii runda/agm/clasament | Cod sursa (job #1535044)
#include <cstdio>
#include <queue>
#include <algorithm>
#define in "lupu.in"
#define out "lupu.out"
#define NMAX 200007
#define LL long long
using namespace std;
int n, x, l, poz = 1, first;
LL sum;
struct oaie
{
int dist;
int w;
} v[NMAX];
bool cmp(const oaie &a, const oaie &b)
{
return a.dist < b.dist;
}
priority_queue <int> pq;
inline void add_to_pq(const int &edge)
{
while(v[poz].dist <= edge && poz <= n)
{
pq.push(v[poz].w);
++poz;
}
}
int main()
{
freopen(in, "r", stdin);
freopen(out, "w", stdout);
scanf("%d %d %d", &n, &x, &l);
for(int i = 1; i<= n; ++i) scanf("%d %d", &v[i].dist, &v[i].w);
sort(v+1, v+n+1, cmp);
for(int lim = 0; lim<= x; lim+=l)
{
add_to_pq(lim);
if(pq.empty()) continue;
first = pq.top();
pq.pop();
sum += first;
}
printf("%lld\n", sum);
return 0;
}