Pagini recente » Cod sursa (job #230693) | Cod sursa (job #3247927) | Cod sursa (job #1132811) | Cod sursa (job #1713394) | Cod sursa (job #3039600)
#include <iostream>
#include <fstream>
#include <set>
#include <algorithm>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
int n, x, l;
set <int, greater<int>> s;
struct oaie
{
int dist, lana;
} a[100005];
inline bool cmp(oaie x, oaie y)
{
return x.dist < y.dist;
}
int main()
{
int maxim = -1e9;
fin >> n >> x >> l;
for (int i = 1; i <= n; i++)
fin >> a[i].dist >> a[i].lana;
fin.close();
sort(a + 1, a + n + 1, cmp);
int pas_max = (x - a[1].dist) / l + 1;
int pas_curent = pas_max, sol = 0;
int oaie_curenta = 1;
while (pas_curent >= 1)
{
for (int i = oaie_curenta; i <= n; i++)
{
int pas_oaie = (x - a[i].dist) / l + 1;
if (pas_oaie == pas_curent)
s.insert(a[i].lana);
if (pas_oaie < pas_curent)
{
oaie_curenta = i;
break;
}
}
if (!s.empty())
{
sol += *s.begin();
s.erase(s.begin());
}
pas_curent--;
}
fout << sol;
fout.close();
return 0;
}