Pagini recente » Cod sursa (job #47728) | Cod sursa (job #1309951) | Cod sursa (job #38097) | Cod sursa (job #1545670) | Cod sursa (job #2500299)
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
#include <climits>
#include <vector>
using namespace std;
struct oita {
long long pasi, lana;
bool operator<(const oita& other) const
{
if (lana == other.lana)
return pasi > other.pasi;
return lana < other.lana;
}
};
vector<oita>oi[100005];
priority_queue<oita>pq;
int main()
{
ifstream cin("lupu.in");
ofstream cout("lupu.out");
long long n, x, l, dst;
long long maxPasi = INT_MIN;
oita temp;
cin >> n >> x >> l;
for (int i = 1; i <= n; i++)
{
cin >> dst >> temp.lana;
temp.pasi = (x-dst)/l+1;
if (x - dst >= 0) {
maxPasi = max(maxPasi, temp.pasi);
oi[temp.pasi].push_back(temp);
}
}
long long sum = 0;
for (int i = maxPasi ; i >= 1 ; i--)
{
for (oita oaie : oi[i])
pq.push(oaie);
if (pq.empty())
continue;
sum += pq.top().lana;
pq.pop();
}
cout << sum << "\n";
return 0;
}