Ctrl K

Эстафета и сумма номеров

Сложная
На тренировке n бегунов с номерами от 0 до n - 1. У каждого бегуна свой адресат: бегун i всегда передаёт палочку бегуну hand_to[i] (можно и самому себе, а у нескольких бегунов может быть один адресат). Вы выбираете, кто начнёт. Затем палочку передают ровно passes раз. Очки эстафеты — сумма номеров всех, кто держал палочку, включая первого бегуна и с повторами. Верните наибольшее число очков, которое можно получить, выбрав лучшего первого бегуна.
Пример 1
hand_to=[1, 2, 0, 0], passes=3 → 6

Начинаем с бегуна 3: эстафета идёт 3 → 0 → 1 → 2, сумма номеров 3 + 0 + 1 + 2 = 6.

Пример 2
hand_to=[0, 1, 1], passes=4 → 6

Бегун 2 передаёт палочку бегуну 1, а тот — сам себе: 2 + 1 + 1 + 1 + 1 = 6.

Пример 3
hand_to=[0], passes=10000000000 → 0
Ограничения
  • 1 ≤ n = len(hand_to) ≤ 10⁵
  • 0 ≤ hand_to[i] ≤ n - 1
  • 1 ≤ passes ≤ 10¹⁰
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКак рассчитаться за меньше переводов СложнаяДве группы с одинаковым средним СложнаяСклейка фрагментов СложнаяЦепочки с квадратными суммами СложнаяСамая маленькая команда со всеми навыками Сложная
загружаем Python…
Вход
hand_to=[1, 2, 0, 0], passes=3
Ожидается
6

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