Pagini recente » Cod sursa (job #2089599) | Cod sursa (job #327412) | Cod sursa (job #248337) | Cod sursa (job #3339905) | Cod sursa (job #3327971)
#include <bits/stdc++.h>
using namespace std;
const string nume="lupu";
ifstream f(nume+".in");
ofstream g(nume+".out");
struct oaie
{
long long x, nr;
};
bool comp(const oaie &a, const oaie &b)
{
if (a.x == b.x)
return a.nr > b.nr;
return a.x < b.x;
}
int main()
{
long long n, x, l;
f >> n >> x >> l;
vector<oaie> v(n);
for (int i = 0; i < n; i++)
{
long long d, a;
f >> d >> a;
if (d > x)
continue;
long long maxK = (x - d) / l + 1;
if (maxK > 0) v.push_back({maxK, a});
}
stable_sort(v.begin(), v.end(),comp);
priority_queue<long long, vector<long long>, greater<long long>> pq;
long long sum = 0;
for (auto &s : v)
{
pq.push(s.nr);
sum += s.nr;
if ((long long)pq.size() > s.x)
{
sum -= pq.top();
pq.pop();
}
}
g << sum;
return 0;
}