Pagini recente » Cod sursa (job #3154959) | Cod sursa (job #2249037) | Cod sursa (job #2902917) | Cod sursa (job #2389036) | Cod sursa (job #1847705)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
FILE *fin, *fout;
struct oaie
{
long long t, a;
};
long long nr, x, l, s, n;
oaie o[100010];
priority_queue<long long> q;
void citire();
bool crit(oaie a, oaie b);
void rezolvare();
int main()
{
citire();
rezolvare();
fprintf(fout, "%lld\n", s);
fclose(fout);
return 0;
}
void citire()
{
long long i, lg;
fin = fopen("lupu.in", "r");
fout = fopen("lupu.out", "w");
fscanf(fin, "%lld%ld%lld", &nr, &x, &l);
for (i = 1; i <= nr; i++)
{
fscanf(fin, "%lld%lld", &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;
}
}
}