Чтобы скопировать выделенный блок текста при мыши, нужно перетащить его в нужное место, удерживая нажатой клавишу: а) ctrl б) shift в) enter г) alt д) ничего не нажимать
130
173
Ответы на вопрос:
Код#include <iostream>#include <utility>#include <numeric>#include <vector>class Beast { int trigger; double aggression; double rage_aggression;public: Beast() = default; Beast(int trigger, double aggression, double range_aggression) : trigger(trigger), aggression(aggression), rage_aggression(range_aggression) { } Beast(const Beast&) = default; Beast(Beast&&) = default; Beast& operator=(const Beast&) = default; Beast& operator=(Beast&&) = default; [[nodiscard]] double calculate_aggression(unsigned long amount) const { return amount > trigger ? rage_aggression : aggression; } void ReadFrom (std::istream& is) { is >> aggression >> rage_aggression >> trigger; } void WriteTo(std::ostream &os) const { os << aggression << " " << rage_aggression << " " << trigger; }};std::istream& operator >>(std::istream &is, Beast &cls) { cls.ReadFrom(is); return is;}std::ostream& operator <<(std::ostream &os, const Beast &cls) { cls.WriteTo(os); return os;}class Cage { double durability; std::vector<Beast> container;public: explicit Cage(double durability, std::vector<Beast> container) : durability(durability), container(std::move(container)) { } Cage(const Cage&) = default; Cage(Cage&&) = default; Cage& operator=(const Cage&) = default; Cage& operator=(Cage&&) = default; [[nodiscard]] double calculate_aggressive() const { auto amount = container.size(); if (amount == 0) return 0; return std::accumulate(container.begin(), container.end(), 0.0, [amount](double total_aggressive, const Beast & beast){ return total_aggressive + beast.calculate_aggression(amount); }); } [[nodiscard]] bool is_it_normal() const { auto aggressive = calculate_aggressive(); return aggressive <= durability; } [[nodiscard]] int get_capacity() const { return container.size(); } [[nodiscard]] double get_durability() const { return durability; }};template <typename T>void subsetsUtil(std::vector<T>& A, std::vector<std::vector<T> >& res, std::vector<T>& subset, int index){ res.push_back(subset); for (int i = index; i < A.size(); i++) { // include the A[i] in subset. subset.push_back(A[i]); // move onto the next element. subsetsUtil(A, res, subset, i + 1); // exclude the A[i] from subset and triggers // backtracking. subset.pop_back(); }}template <typename T>std::vector<std::vector<T>> P(std::vector<T>& A){ std::vector<T> subset; std::vector<std::vector<T>> res; int index = 0; subsetsUtil(A, res, subset, index); return res;}int main () { int n, s; Beast noname{}; std::vector<Beast> set_of_beasts; std::cin >> n >> s; for (auto i = 0; i < n; ++i) { std::cin >> noname; set_of_beasts.push_back(noname); } auto selections = P(set_of_beasts); std::vector<Cage> variants; std::transform(selections.begin(), selections.end(), std::back_inserter(variants), [s](std::vector<Beast> &selection){ return Cage(s, selection); }); std::vector<Cage> true_variants; std::copy_if(variants.begin(), variants.end(), std::back_inserter(true_variants), [](Cage& x) {return x.is_it_normal();}); auto the_best_of_the_best_variant = *std::max_element(true_variants.begin(), true_variants.end(), [](Cage & s1, Cage & s2){ return s1.get_capacity() < s2.get_capacity(); }); std::cout << the_best_of_the_best_variant.get_capacity(); return 0;}
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
jeviduwel08.04.2022 02:10
-
Фариза111111105.03.2020 15:08
-
vladisden08.09.2020 02:05
-
Artemkizaru09.01.2023 14:42
-
rotaru193005.10.2021 06:48
-
PomoshnikYa08.07.2020 13:57
-
dianochka17dor09.05.2020 04:32
-
папа29825.07.2021 07:31
-
Fixa31.08.2021 08:06
-
Victor11111111113.08.2022 19:38
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.