Ctrl K

Сумма цепочек с шагом в единицу

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

Цепочки: [3], [4], [3], [3, 4], [4, 3]. Их суммы: 3 + 4 + 3 + 7 + 7 = 24.

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

Одиночные элементы дают 16, а цепочка [5, 6] получается двумя способами (с любой из пятёрок) и даёт 2 · 11 = 22. Итого 38.

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

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