Ctrl K

Сумма плавных выборок

Сложная
Дан массив целых чисел values. Назовём подпоследовательность (элементы берутся с сохранением порядка, не обязательно подряд) **плавной**, если любые два соседних её элемента отличаются ровно на 1 — вверх или вниз, направление может меняться. Подпоследовательность из одного элемента плавная всегда. Подпоследовательности из разных позиций считаются разными, даже если числа в них совпадают. Верните сумму элементов всех плавных подпоследовательностей по модулю 10⁹ + 7.
Пример 1
values=[2, 3, 2] → 24

Подходят [2], [3], [2], [2, 3], [3, 2] и [2, 3, 2]. Суммы: 2 + 3 + 2 + 5 + 5 + 7 = 24.

Пример 2
values=[4, 6, 5] → 35

Подходят [4], [6], [5], [4, 5] и [6, 5]; [4, 6] не подходит — шаг 2. Итого 15 + 9 + 11 = 35.

Пример 3
values=[0, 0, 1] → 3
Ограничения
  • 1 ≤ len(values) ≤ 10⁵
  • 0 ≤ values[i] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВсе способы расставить пробелы СложнаяЦепочки с квадратными суммами СложнаяНарезка с штрафом за повторы СложнаяКорни, подходящие под догадки СложнаяПодъём по строкам и столбцам Сложная
загружаем Python…
Вход
values=[2, 3, 2]
Ожидается
24

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