Ctrl K

Лучший отрезок повторяющейся ленты

Средняя
Массив pattern записали на ленту times раз подряд: например, [1, -2] и times = 3 дают ленту 1, -2, 1, -2, 1, -2. Найдите наибольшую сумму непрерывного отрезка этой ленты. Отрезок может быть пустым — тогда его сумма равна 0. Ответ может быть большим, поэтому верните его по модулю 10⁹ + 7.
Пример 1
pattern=[2, -5, 3], times=3 → 5

Лента: 2, -5, 3, 2, -5, 3, 2, -5, 3. Лучший отрезок — 3, 2 на стыке двух копий, сумма 5.

Пример 2
pattern=[4, -1], times=3 → 10

Лента: 4, -1, 4, -1, 4, -1. Отрезок от первой до последней четвёрки даёт 4 - 1 + 4 - 1 + 4 = 10.

Пример 3
pattern=[-3, -1], times=4 → 0

Все числа отрицательные, поэтому выгоднее взять пустой отрезок с суммой 0.

Ограничения
  • 1 ≤ len(pattern) ≤ 10⁵
  • 1 ≤ times ≤ 10⁵
  • -10⁴ ≤ pattern[i] ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМеньше всего прыжков до конца СредняяСамая прибыльная серия дней СредняяДобраться до последней клетки СредняяМаршруты тележки по складу СредняяДешёвый маршрут из угла в угол Средняя
загружаем Python…
Вход
pattern=[2, -5, 3], times=3
Ожидается
5

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