totals длины n. Нужно разложить каждый элемент на два неотрицательных целых слагаемых: totals[i] = up[i] + down[i].
Разложение подходит, если массив up неубывающий (up[0] ≤ up[1] ≤ … ≤ up[n-1]), а массив down невозрастающий (down[0] ≥ down[1] ≥ … ≥ down[n-1]).
Сколько существует подходящих разложений? Два разложения различны, если различаются их массивы up. Ответ может быть огромным — верните его по модулю 10⁹ + 7.totals=[3, 1] → 3
Подходят три разбиения: up=[0, 0], down=[3, 1]; up=[0, 1], down=[3, 0]; up=[1, 1], down=[2, 0].
totals=[4, 4, 4] → 35
Здесь up — любая неубывающая тройка чисел от 0 до 4, а down тогда сам получается невозрастающим. Таких троек 35.
totals=[1, 5, 1] → 0
Из-за скачка с 1 до 5 up должен вырасти хотя бы на 4, а последний элемент up не больше 1. Разбиений нет.
totals=[3, 1]
3
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 100 тестов на сервере, включая скрытые.