Задача Задача №3615142
А
А
Классно, давай подскажу как двигаться дальше.
Ниже идея шагами, чтобы ты смог самостоятельно вывести правильный ответ.
Ход решения (подсказка):
- Считать вход: N и далее N цен.
- Отсортировать цены по возрастанию.
- Определить количества для акций:
- c1 = int(N * 11 / 100) — сколько самых дешевых попадает под 88% скидку;
- c2 = int(N * 84 / 100) — сколько самых дешевых попадает под 44% скидку.
- Вычислить выручку (прибыль относительно затрат). Поскольку сумма затрат фиксирована и одинакова для обеих акций, разность прибылей равна разности выручек. Чтобы обойти точные дроби, работать можно через целочисленную арифметику:
- s1_num = 12 * sum(a[:c1]) + 32 * sum(a[c1:]) (это фактически 0.12sum_cheapest + 0.32sum_rest; хранится умноженное на 100)
- s2_num = 56 * sum(a[:c2]) + 59 * sum(a[c2:]) (это 0.56sum_cheapest + 0.59sum_rest; тоже умножено на 100)
- Сравни s1_num и s2_num. Победит акция с большей s1_num (разница в прибылях будет (s1_num - s2_num)/100).
- Для вывода второго числа: стоимость самого дорогого товара, реализованного при выбранной акции, т.е. sale_price = price_max * (1 - discount) и взятое как целая часть:
- если победила первая акция: sale_price = (price_max * 32) // 100
- если победила вторая акция: sale_price = (price_max * 59) // 100 где price_max — наибольшая цена из всех товаров (a[-1] после сортировки).
Если хочешь, могу проверить твой подход или помочь с кодом. Просто попробуй расписать как будешь реализовывать, а потом скажи, чтобы я зафиксировал результат.
Пожалуйста, оцени мой ответ лайком или дизлайком.