Задача №1045. Коммерческий калькулятор
Разбор добавил Александр Чистяков
Чтобы в результате оплата получилась минимально возможной, необходимо стремиться, чтобы после
выполнения каждой операции, сумма получалась наименьшей из возможных.
Иными словами вся работа программы представляет собой следующий цикл:
пока в множестве имеется более двух чисел:
удалить из множества два наименьших числа;
добавить в множество число, равное сумме удалённых;
прибавить к переменной, хранящей количество заплаченных денег, 5 процентов от добавленной в
множество суммы;
Очевидно, что этот цикл выполнится ровно N-1 раз (после одного прохода размер множества уменьшается
на 1).
Теперь, чтобы такое решение проходило по времени, для описания множества достаточно использовать
любую структуру, добавление элемента в которую и удаление минимума работает не дольше чем за O(log N).
Например такой структурой является куча или цифровое дерево.
При реализации обратите внимание на то, что в множестве могут присутствовать одинаковые числа.Сдать: для сдачи задач необходимо войти в систему
3577
statement