Олимпиадный тренинг

Задача . F. Медуза и OEIS


Задача

Темы: дп *3500

Медуза всегда использует OEIS для решения математических задач, но сейчас она нашла задачу, которую нельзя решить с помощью OEIS:

Подсчитайте количество перестановок \(p\) из \([1, 2, \dots, n]\) таких, что для всех \((l, r)\) таких, что \(l \leq r \leq m_l\), подмассив \([p_l, p_{l+1}, \dots, p_r]\) не является перестановкой \([l, l+1, \dots, r]\).

Поскольку ответ может быть большим, необходимо найти ответ по модулю \(10^9+7\).

Входные данные

Первая строка ввода содержит одно целое число \(n\) (\(1 \leq n \leq 200\)) — длину перестановки.

Вторая строка ввода содержит \(n\) целых чисел \(m_1, m_2, \dots, m_n\) (\(0 \leq m_i \leq n\)).

Выходные данные

Выведите количество различных перестановок, удовлетворяющих условиям, по модулю \(10^9+7\).

Примечание

В первом примере условию удовлетворяют \([2, 3, 1]\) и \([3, 1, 2]\).


Примеры
Входные данныеВыходные данные
1 3
1 2 3
2
2 5
2 4 3 4 5
38
3 5
5 1 1 1 1
0

time 2000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя