Ctrl K

Прыжки с оглядкой на чётность

Средняя
Вы стоите на позиции 0 массива values и движетесь только вперёд: с позиции i можно перепрыгнуть на любую позицию j > i, пропуская сколько угодно элементов. За каждую посещённую позицию (включая стартовую) вы получаете values[i] очков. Но если вы прыгаете между числами разной чётности, со счёта списывается penalty. Остановиться можно где угодно. Верните максимальный счёт, который удастся набрать.
Пример 1
values=[4, 7, 10, 3, 8], penalty=4 → 22

Выгодно пройти по всем чётным: 4 → 10 → 8 даёт 22. Если добавить 7 и 3, придётся дважды сменить чётность (4 → 7 → 10 ...), а каждая смена стоит 4 — выйдет меньше.

Пример 2
values=[2, 9, 11, 13], penalty=1 → 34

Одна смена чётности стоит всего 1: 2 + 9 + 11 + 13 - 1 = 34.

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

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