Pagini recente » Cod sursa (job #1912077) | Cod sursa (job #1955743) | Cod sursa (job #146795) | Cod sursa (job #1977054) | Cod sursa (job #2811312)
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
struct Sheep {
private:
public:
size_t distance = 0, max_step = 0, wool = 0;
};
int main() {
std::ifstream input("lupu.in");
std::ofstream output("lupu.out");
std::priority_queue<size_t, std::vector<size_t>> woolQueue;
size_t n, wolf_max_distance, increment, max_step = 0;
std::vector<Sheep> sheep;
input >> n >> wolf_max_distance >> increment;
sheep.reserve(n);
for (size_t i = 0; i < n; ++i) {
Sheep a;
input >> a.distance >> a.wool;
a.max_step = (wolf_max_distance - a.distance) / increment + 1;
sheep.push_back(a);
if (a.max_step > max_step) max_step = a.max_step;
}
size_t total_wool = 0;
for (size_t i = max_step; i >= 1; --i) {
for (size_t j = 0; j < n; ++j) if (sheep[j].max_step == i) woolQueue.push(sheep[j].wool);
if (!woolQueue.empty()) {
total_wool += woolQueue.top();
woolQueue.pop();
}
}
output << total_wool;
return 0;
}