В приложении Т-Банка идёт квест на n дней. Задание дня i приносит points[i] баллов; у части дней баллы отрицательные — задание требует потратить бонусы, например оплатить подписку.
Первый и последний день выполнять обязательно. Между двумя выполненными днями можно пропустить не больше k − 1 дней подряд, то есть следующий выполненный день — не дальше чем через k дней после предыдущего. Иначе серия сгорает.
Верните наибольшую сумму баллов, которую можно собрать, сохранив серию.
В работе: Подсказка «какие задания можно пропустить без потери серии» в геймификации приложения.
Пример 1
points = [10, -5, -20, 4, -3, 8] k = 2
17
Дни 0, 1, 3, 5: 10 − 5 + 4 + 8 = 17. Пропустить и день 1, и день 2 нельзя — разрыв 3 > k.
Пример 2
points = [-7] k = 3
-7
Один день — он и первый, и последний.
Ограничения
- 1 ≤ n ≤ 10⁵
- 1 ≤ k ≤ n
- −10⁴ ≤
points[i]≤ 10⁴ - Лимит — 2 с на тест (2000 мс).
print() и console.log() уходят в консоль.
def quest_max_points(points, k):
Источник: наша задача на данных Т-Банка. Условие пересказано своими словами.
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.