题目描述
(1, 2, …, N) の順列 P = (P1, P2, …, PN) が与えられます。
下記の 2 つの条件をともに満たす長さ N の整数列 A = (A1, A2, …, AN) の個数を 998244353 で割ったあまりを出力してください。
- すべての i = 1, 2, …, N について、1 ≤ Ai ≤ M。
- 整数列 A は整数列 (AP1, AP2, …, APN) より辞書順で小さい。
辞書順で小さいとは?整数列 X = (X1, X2, …, XN) が 整数列 Y = (Y1, Y2, …, YN) より辞書順で小さいとは、下記の 2 つの条件をともに満たす整数 1 ≤ i ≤ N が存在することを言います。
- 1 ≤ j ≤ i−1 を満たすすべての整数 j について、Xj = Yj
- Xi < Yi
输入格式
入力は以下の形式で標準入力から与えられる。
N M P1 P2 … PN
输出格式
問題文中の 2 つの条件をともに満たす整数列 A の個数を 998244353 で割ったあまりを出力せよ。
题目大意
Description
给定一个 1∼N 的排列 P,找到符合以下条件的 A 数组的数量 mod998244353。
- 对于 1∼N 的每一个 i,1≤Ai≤M。
- A 数组字典序小于 (AP1,AP2,⋯,APn) 数组。
4 2
4 1 3 2
6
1 1
1
0
20 100000
11 15 3 20 17 6 1 9 5 19 10 16 7 8 12 2 18 14 4 13
55365742
提示
制約
- 1 ≤ N ≤ 2 × 105
- 1 ≤ M ≤ 109
- 1 ≤ Pi ≤ N
- i = j ⟹ Pi = Pj
- 入力はすべて整数
Sample Explanation 1
問題文中の 2 つの条件をともに満たす整数列 A は、 $ (1,\ 1,\ 1,\ 2),\ (1,\ 1,\ 2,\ 2),\ (1,\ 2,\ 1,\ 2),\ (1,\ 2,\ 2,\ 2),\ (2,\ 1,\ 1,\ 2),\ (2,\ 1,\ 2,\ 2) $ の 6 個です。 例えば、A = (1, 1, 1, 2) のとき、$ (A_{P_1},\ A_{P_2},\ A_{P_3},\ A_{P_4})\ =\ (2,\ 1,\ 1,\ 1) $ であり、これは A より辞書順で大きいです。