Pagini recente » Cod sursa (job #150608) | Cod sursa (job #609229) | Cod sursa (job #674389) | Cod sursa (job #2159383) | Cod sursa (job #1847703)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
FILE *fin, *fout;
struct oaie
{
int t, a;
};
int 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();
fprintf(fout, "%d\n", s);
fclose(fout);
return 0;
}
void citire()
{
int i, lg;
fin = fopen("lupu.in", "r");
fout = fopen("lupu.out", "w");
fscanf(fin, "%d%d%d", &nr, &x, &l);
for (i = 1; i <= nr; i++)
{
fscanf(fin, "%d%d", &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()
{
int 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;
}
}
}