Pagini recente » Cod sursa (job #401763) | Cod sursa (job #1380687) | Cod sursa (job #2464499) | Cod sursa (job #346701) | Cod sursa (job #3207722)
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
struct oaia
{
int dist, lana;
};
bool cmp(oaia x, oaia y)
{
return (x.dist > y.dist);
}
int main()
{
ifstream in("lupu.in");
ofstream out("lupu.out");
int n, dist_max, dist_cresc;
in >> n >> dist_max >> dist_cresc;
vector <oaia> v(n);
for (int i = 0; i < n; i++)
{
in >> v[i].dist >> v[i].lana;
}
sort(v.begin(), v.end(), cmp);
priority_queue <int, vector <int>, greater <int>> preselectate;
int timp = 0;
long long total = 0;
for (auto oa: v)
{
if (oa.dist + timp * dist_cresc <= dist_max)
{
total += oa.lana;
preselectate.push(oa.lana);
timp++;
}
else
{
///oa e mai buna ca cea mei proasta preselectata
if (!preselectate.empty() && oa.lana > preselectate.top())
{
total += oa.lana - preselectate.top();
preselectate.pop();
preselectate.push(oa.lana);
}
}
}
out << total << "\n";
in.close();
out.close();
return 0;
}