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

Задача . E. Разделяемые перестановки


Изначально у нас был один массив — перестановка размера \(n\) (массив размера \(n\), где каждое целое число от \(1\) до \(n\) встречается ровно один раз).

Мы провели \(q\) операций. В ходе \(i\)-й операции мы сделали следующее:

  • выбрали любой из имеющихся у нас массивов размера хотя бы \(2\);
  • разделили его на две непустых части (префикс и суффикс);
  • записали два числа \(l_i\) и \(r_i\), где \(l_i\) — максимум в левой из полученных частей, а \(r_i\) — максимум в правой из полученных частей;
  • удалили массив, который мы разделили, из набора массивов, которые мы можем использовать, а вместо него добавили две полученных части массива.

Например, пусть изначально у нас был массив \([6, 3, 4, 1, 2, 5]\), и мы провели следующие операции:

  1. выбрали массив \([6, 3, 4, 1, 2, 5]\) и разделили его на \([6, 3]\) и \([4, 1, 2, 5]\). Затем мы записали \(l_1 = 6\) и \(r_1 = 5\), и в следующих операциях нам доступны массивы \([6, 3]\) и \([4, 1, 2, 5]\);
  2. выбрали массив \([4, 1, 2, 5]\) и разделили его на \([4, 1, 2]\) и \([5]\). Затем мы записали \(l_2 = 4\) и \(r_2 = 5\), и в следующих операциях нам доступны массивы \([6, 3]\), \([4, 1, 2]\) и \([5]\);
  3. выбрали массив \([4, 1, 2]\) и разделили его на \([4]\) и \([1, 2]\). Затем мы записали \(l_3 = 4\) и \(r_3 = 2\), и в следующих операциях нам доступны массивы \([6, 3]\), \([4]\), \([1, 2]\) и \([5]\).

Даны два целых числа \(n\) и \(q\), а также две последовательности \([l_1, l_2, \dots, l_q]\) и \([r_1, r_2, \dots, r_q]\). Перестановку размера \(n\) назовем подходящей, если можно провести на ней \(q\) операций и получить заданные последовательности \([l_1, l_2, \dots, l_q]\) и \([r_1, r_2, \dots, r_q]\).

Посчитайте количество подходящих перестановок.

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

В первой строке заданы два целых числа \(n\) и \(q\) (\(1 \le q < n \le 3 \cdot 10^5\)).

Во второй строке заданы \(q\) целых чисел \(l_1, l_2, \dots, l_q\) (\(1 \le l_i \le n\)).

В третьей строке заданы \(q\) целых чисел \(r_1, r_2, \dots, r_q\) (\(1 \le r_i \le n\)).

Дополнительное ограничение на входные данные: существует хотя бы одна перестановка, по которой можно получить заданные последовательности \([l_1, l_2, \dots, l_q]\) и \([r_1, r_2, \dots, r_q]\).

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

Выведите одно целое число — количество подходящих перестановок, взятое по модулю \(998244353\).


Примеры
Входные данныеВыходные данные
1 6 3
6 4 4
5 5 2
30
2 10 1
10
9
1814400
3 4 1
2
4
8

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

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