atcoder#ARC151B. [ARC151B] A < AP

[ARC151B] A < AP

配点 : 500500

問題文

(1,2,,N)(1, 2, \ldots, N) の順列 P=(P1,P2,,PN)P = (P_1, P_2, \ldots, P_N) が与えられます。

下記の 22 つの条件をともに満たす長さ NN の整数列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N) の個数を 998244353998244353 で割ったあまりを出力してください。

  • すべての i=1,2,,Ni = 1, 2, \ldots, N について、1AiM1 \leq A_i \leq M
  • 整数列 AA は整数列 (AP1,AP2,,APN)(A_{P_1}, A_{P_2}, \ldots, A_{P_N}) より辞書順で小さい。
辞書順で小さいとは?

整数列 X=(X1,X2,,XN)X = (X_1, X_2, \ldots, X_N) が 整数列 Y=(Y1,Y2,,YN)Y = (Y_1, Y_2, \ldots, Y_N) より辞書順で小さいとは、下記の 22 つの条件をともに満たす整数 1iN1 \leq i \leq N が存在することを言います。

  • 1ji11 \leq j \leq i-1 を満たすすべての整数 jj について、Xj=YjX_j = Y_j
  • Xi<YiX_i \lt Y_i

制約

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1M1091 \leq M \leq 10^9
  • 1PiN1 \leq P_i \leq N
  • ij    PiPji \neq j \implies P_i \neq P_j
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

NN MM

P1P_1 P2P_2 \ldots PNP_N

出力

問題文中の 22 つの条件をともに満たす整数列 AA の個数を 998244353998244353 で割ったあまりを出力せよ。

4 2
4 1 3 2
6

問題文中の 22 つの条件をともに満たす整数列 AA は、 $(1, 1, 1, 2), (1, 1, 2, 2), (1, 2, 1, 2), (1, 2, 2, 2), (2, 1, 1, 2), (2, 1, 2, 2)$ の 66 個です。 例えば、A=(1,1,1,2)A = (1, 1, 1, 2) のとき、$(A_{P_1}, A_{P_2}, A_{P_3}, A_{P_4}) = (2, 1, 1, 1)$ であり、これは AA より辞書順で大きいです。

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