Pagini recente » Cod sursa (job #156172) | Cod sursa (job #3347616) | Cod sursa (job #2287632) | Cod sursa (job #3343175) | Cod sursa (job #3358330)
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
struct Oaie
{
long long deadline;
long long lana;
};
bool cmp(Oaie a, Oaie b)
{
return a.deadline < b.deadline;
}
int main()
{
ifstream in("lupu.in");
ofstream out("lupu.out");
long long N, X, L;
in >> N >> X >> L;
vector<Oaie> v;
for (long long i = 0; i < N; i++)
{
long long D, A;
in >> D >> A;
if (D <= X)
{
Oaie o;
o.deadline = (X - D) / L;
o.lana = A;
v.push_back(o);
}
}
sort(v.begin(), v.end(), cmp);
priority_queue<long long> heap;
long long suma = 0;
int p = (int)v.size() - 1;
long long timp_max = -1;
if (!v.empty())
timp_max = v.back().deadline;
for (long long t = timp_max; t >= 0; t--)
{
while (p >= 0 && v[p].deadline >= t)
{
heap.push(v[p].lana);
p--;
}
if (!heap.empty())
{
suma += heap.top();
heap.pop();
}
}
out << suma;
return 0;
}