Ctrl K

Витрина: выручка плюс разнообразие

Сложная
Магазин собирает витрину. Есть список товаров goods, где goods[i] = [profit, category] — выручка от товара и его категория. На витрину нужно поставить ровно count товаров (каждый товар из списка можно взять не больше одного раза). Ценность витрины равна сумме выручки выбранных товаров плюс **квадрат** числа различных категорий среди них. Верните наибольшую возможную ценность витрины.
Пример 1
goods=[[7, 1], [6, 1], [2, 2]], count=2 → 14

Два товара категории 1 дают 7 + 6 + 1² = 14. Товары [7, 1] и [2, 2] дают 7 + 2 + 2² = 13. Лучше 14.

Пример 2
goods=[[10, 3], [9, 3], [1, 1], [1, 2]], count=3 → 24

Берём [10, 3], [9, 3] и [1, 1]: выручка 20, две категории, 20 + 2² = 24. Три разные категории дают лишь 10 + 1 + 1 + 3² = 21.

Пример 3
goods=[[5, 1]], count=1 → 6
Ограничения
  • 1 ≤ len(goods) = n ≤ 10⁵
  • goods[i] = [profit, category]
  • 1 ≤ profit ≤ 10⁹
  • 1 ≤ category ≤ n
  • 1 ≤ count ≤ n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый узкий отрезок для всех списков СложнаяЗадания с перерывом на остывание СредняяМетки вразнобой СредняяУбрать половину списка СредняяРазобрать стопки поровну Лёгкая
загружаем Python…
Вход
goods=[[7, 1], [6, 1], [2, 2]], count=2
Ожидается
14

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 108 тестов на сервере, включая скрытые.