Pagini recente » Cod sursa (job #143567) | Cod sursa (job #3229519) | Cod sursa (job #691040) | Cod sursa (job #2400848) | Cod sursa (job #3125864)
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 1e5;
int main()
{
ifstream in("lupu.in");
ofstream out("lupu.out");
int n, x, l;
in >> n >> x >> l;
vector <pair <int, int>> v(n);
for (int i = 0; i < n; i++)
{
in >> v[i].first >> v[i].second;
}
sort(v.begin(), v.end(), greater <pair <int, int>>());
priority_queue <int, vector<int>, greater<int>> h;
int t_c = 0;
long long l_totala = 0;
for (auto p: v)
{
if (p.first + (long long)t_c * l <= x)
{
h.push(p.second);
l_totala += p.second;
t_c++;
}
else
{
if (!h.empty() && p.second > h.top())
{
l_totala += p.second - h.top();
h.pop();
h.push(p.second);
}
}
}
out << l_totala << "\n";
in.close();
out.close();
return 0;
}