Pagini recente » Cod sursa (job #1459362) | Cod sursa (job #1778710) | Cod sursa (job #169360) | Cod sursa (job #1711586) | Cod sursa (job #3166250)
#include <fstream>
#include <algorithm>
#include <queue>
#define MAX 100000
using namespace std;
ifstream cin ("lupu.in");
ofstream cout ("lupu.out");
priority_queue <int> pq;
struct ura
{
int cnt, wool;
};
ura v[MAX + 10];
bool cmp(ura a, ura b)
{
if (a.cnt > b.cnt)
return true;
if (a.cnt < b.cnt)
return false;
if (a.wool > b.wool)
return true;
return false;
}
int main()
{
int n, maxDist, addedDist;
cin >> n >> maxDist >> addedDist;
for (int i = 1; i <= n; i++)
{
int dist, wool;
cin >> dist >> wool;
int cnt = (maxDist - dist) / addedDist;
v[i] = {cnt, wool};
}
sort(v + 1, v + n + 1, cmp);
long long totalWool = 0;
int i = 1;
for (int cnt = v[1].cnt; cnt >= 0; cnt--)
{
while (i <= n && v[i].cnt >= cnt)
{
pq.push(v[i].wool);
i++;
}
if (!pq.empty())
{
totalWool = totalWool + pq.top();
pq.pop();
}
}
cout << totalWool;
return 0;
}