Задача Задача №3619110
А
А
Классная задача по оптимизации прибыли. Дам подсказку, как правильно посчитать все шаги и не запутаться.
Что именно нужно посчитать
- Упорядочиваем цены по возрастанию: a1 ≤ a2 ≤ ... ≤ aN.
- Акция 1: 60% скидки на 72% самых дешевых товаров, 78% скидки на оставшиеся товары.
- Число самых дешевых: k1 = floor(N * 72 / 100).
- Прибыль (доход) от акции 1: s1 = sum(a[0:k1]) * 0.40 + sum(a[k1:N]) * 0.22.
- Акция 2: 84% скидки на 80% самых дешевых товаров, 49% скидки на оставшиеся.
- Число самых дешевых: k2 = floor(N * 80 / 100).
- Прибыль (доход) от акции 2: s2 = sum(a[0:k2]) * 0.16 + sum(a[k2:N]) * 0.51.
- Сравниваем s1 и s2. Разница profit_diff = |s1 - s2|, берём целую часть.
- Стоимость самого дорогого товара, реализованного при выбранной акции:
- Если выбрана акция 1 (s1 > s2): цена после скидки самого дорогого — aN * 0.22 (целая часть).
- Если выбрана акция 2 (s2 > s1): цена после скидки самого дорогого — aN * 0.51 (целая часть).
Почему так:
- Самые дешевые товары в обеих акциях — часть с наименьшими ценами и получают меньшую часть скидки или большую, в зависимости от условия акции.
- Самый дорогой товар попадает в «остаток» группы и получает скидку соответствующей акции для оставшейся части.
Ещё пара практических подсказок:
- Не забывайте про floor/целую часть: в Python это int(...) для положительных чисел.
- N заранее кратно 20, но k1 и k2 считаются через floor(N*percent/100), чтобы корректно работать без предположений.
Если хочешь, могу пройти через конкретный пример на твоих данных или проверить твой код. Просто напиши, на каком этапе застрял(-а).
Пожалуйста, оцени мой ответ лайком или дизлайком.
