Ctrl K

Темп отряда задаёт самый слабый

Сложная
Есть n кандидатов в отряд. У кандидата i навык skill[i] и выносливость endurance[i]. Нужно выбрать отряд из **не более чем** max_size разных кандидатов (хотя бы из одного). Выработка отряда — сумма навыков его участников, умноженная на наименьшую выносливость среди них. Верните наибольшую возможную выработку. Ответ может быть очень большим, поэтому верните его остаток от деления на 10⁹ + 7 (максимизировать нужно саму выработку, а не остаток).
Пример 1
n=4, skill=[3, 8, 2, 6], endurance=[6, 2, 9, 4], max_size=2 → 36

Пара 0 и 3: (3 + 6) · min(6, 4) = 36. Сильнейший по навыку участник 1 тянет выносливость вниз: с ним не больше (8 + 6) · 2 = 28.

Пример 2
n=3, skill=[5, 5, 5], endurance=[3, 3, 3], max_size=3 → 45

Берём всех: (5 + 5 + 5) · 3 = 45.

Пример 3
n=3, skill=[1, 1, 10], endurance=[100, 100, 1], max_size=3 → 200

Вдвоём участники 0 и 1 дают 2 · 100 = 200 — брать всех выгоднее не всегда.

Ограничения
  • 1 ≤ max_size ≤ n ≤ 10⁵
  • len(skill) == len(endurance) == n
  • 1 ≤ skill[i] ≤ 10⁵
  • 1 ≤ endurance[i] ≤ 10⁸
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНаращиваем капитал проектами СложнаяБольше заказов к сроку СложнаяСамый узкий отрезок для всех списков СложнаяБригада с оплатой по навыку СложнаяРазброс оценок при делении посылок Сложная
загружаем Python…
Вход
n=4, skill=[3, 8, 2, 6], endurance=[6, 2, 9, 4], max_size=2
Ожидается
36

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