Pagini recente » Cod sursa (job #133843) | Cod sursa (job #1149101) | Cod sursa (job #2719469) | Cod sursa (job #2813841) | Cod sursa (job #2500294)
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
#include <climits>
#include <vector>
using namespace std;
struct oita {
int pasi, lana;
bool operator<(const oita& other) const
{
return lana < other.lana;
}
};
vector<oita>oi[100005];
priority_queue<oita>pq;
int main()
{
ifstream cin("lupu.in");
ofstream cout("lupu.out");
int n, x, l, dst;
int 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;
maxPasi = max(maxPasi, temp.pasi);
oi[temp.pasi].push_back(temp);
}
int 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;
}