Pagini recente » Cod sursa (job #842628) | Cod sursa (job #447599) | Cod sursa (job #1741632) | Cod sursa (job #1745662) | Cod sursa (job #2839176)
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
const int DIM = 100005;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
struct oaie
{
long long timp;
long long lana;
};
long long n, dist, step, i, d, timpRamas, sol;
oaie oi[DIM];
priority_queue<long long> wool;
bool comp(oaie o1, oaie o2)
{
if (o1.timp < o2.timp)
return true;
return false;
}
int main()
{
cin >> n >> dist >> step;
for (i = 1; i <= n; i++) {
cin >> d;
cin >> oi[i].lana;
if (d <= dist) {
if (step == 0)
oi[i].timp = DIM;
else {
oi[i].timp = (dist - d) / step;
if (oi[i].timp > DIM)
oi[i].timp = DIM;
}
}
else
oi[i].timp = -1;
}
sort(oi + 1, oi + n + 1, comp);
timpRamas = oi[n].timp;
i = n;
while (timpRamas >= 0) {
while (i >= 1 && oi[i].timp == timpRamas) {
wool.push(oi[i].lana);
i--;
}
if (!wool.empty()) {
sol += wool.top();
wool.pop();
}
timpRamas--;
}
cout << sol;
cin.close();
cout.close();
return 0;
}