Pagini recente » Cod sursa (job #123274) | Cod sursa (job #3160035) | Cod sursa (job #3141420) | Cod sursa (job #668280) | Cod sursa (job #1847698)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
struct oaie
{
long long t, a;
};
long long nr, x, l, s, n;
oaie o[100010];
priority_queue<int> q;
void citire();
bool crit(oaie a, oaie b);
void rezolvare();
int main()
{
citire();
rezolvare();
fout << s << '\n';
fout.close();
return 0;
}
void citire()
{
long long i, lg;
fin >> nr >> x >> l;
for (i = 1; i <= nr; i++)
{
fin >> lg >> o[i].a;
if (x >= lg)
o[i].t = (x - lg) / l + 1;
}
sort(o + 1, o + nr + 1, crit);
}
bool crit(oaie a, oaie b)
{
return a.t >= b.t;
}
void rezolvare()
{
long long i = 1, zi, j;
zi = o[1].t;
if (x > 0)
{
while (zi > 0)
{
while (o[i].t == zi)
{
q.push(o[i].a);
i++;
}
for (j = 1; j <= zi - o[i].t && !q.empty(); j++)
{
s += q.top();
q.pop();
}
zi = o[i].t;
}
}
}