Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <vector>
- using namespace std;
- class Heap :public vector<size_t>
- {
- public:
- size_t mass;
- Heap() : mass(0) {}
- };
- int main()
- {
- size_t nRocks;
- cout << "Enter the number of rocks = ";
- cin >> nRocks;
- vector<size_t> rocks(nRocks);
- Heap first, second;
- for (size_t i = 0; i < nRocks; i++)
- {
- cout << "[" << i + 1 << "] ";
- cin >> rocks[i];
- }
- sort(rocks.rbegin(), rocks.rend());
- first.push_back(rocks.front());
- first.mass += first.front();
- rocks.erase(rocks.begin());
- for (auto& it : rocks)
- {
- if (first.mass > second.mass)
- {
- second.push_back(it);
- second.mass += it;
- }
- else
- {
- first.push_back(it);
- first.mass += it;
- }
- }
- cout << endl << "Results" << endl;
- if ((first.mass > second.mass ? static_cast<float>(first.mass) : static_cast<float>(second.mass)) /
- (first.mass > second.mass ? static_cast<float>(second.mass) : static_cast<float>(first.mass)) <= 1.5f)
- {
- cout << "First heap: " << endl;
- for (auto& it : first)
- cout << it << " ";
- cout << endl << "First heap mass = " << first.mass << endl;
- cout << endl << "Second heap" << endl;
- for (auto& it : second)
- cout << it << " ";
- cout << endl << "Second heap mass = " << second.mass << endl;
- }
- else
- {
- cout << endl << "First heap mass = " << first.mass << endl;
- cout << endl << "Second heap mass = " << second.mass << endl;
- cout << endl << "Difference = " << (first.mass > second.mass ? static_cast<float>(first.mass) : static_cast<float>(second.mass)) / (first.mass > second.mass ? static_cast<float>(second.mass) : static_cast<float>(first.mass));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement