atcoder#ABC247H. [ABC247Ex] Rearranging Problem

[ABC247Ex] Rearranging Problem

配点 : 600600

問題文

11, 人 22, \dots, 人 NNNN 人の人がいて、前から (1,2,,N)(1,2,\dots,N) の順に一列に並んでいます。人 ii は色 cic_i の服を着ています。 高橋君は任意の 22i,ji,j を選んで人 ii と人 jj の位置を入れ替える操作を KK 回繰り返しました。 KK 回の操作を終了した時点で、1iN1 \leq i \leq N を満たすすべての整数 ii に対して、前から ii 番目の人が着ている服の色は cic_i と一致しました。 KK 回の操作を終了した後にあり得る人の並び方は何通りありますか? 答えを 998244353998244353 で割ったあまりを求めてください。

制約

  • 2N2000002 \leq N \leq 200000
  • 1K1091 \leq K \leq 10^9
  • 1ciN1 \leq c_i \leq N
  • 入力される値はすべて整数である。

入力

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

NN KK

c1c_1 c2c_2 \dots cNc_N

出力

答えを出力せよ。

4 1
1 1 2 1
3

高橋君の操作、および操作後の列としてあり得るものをすべて挙げると次のようになります。

  • 11 と人 22 の位置を入れ替える。操作後の並び方は (2,1,3,4)(2, 1, 3, 4) となる。
  • 11 と人 44 の位置を入れ替える。操作後の並び方は (4,2,3,1)(4, 2, 3, 1) となる。
  • 22 と人 44 の位置を入れ替える。操作後の並び方は (1,4,3,2)(1, 4, 3, 2) となる。
3 3
1 1 2
1

あり得る高橋君の操作の例を 1 つ挙げると次のようになります。

  • 11 回目の操作で人 11 と人 33 の位置を入れ替える。操作後の並び方は (3,2,1)(3, 2, 1) となる。 22 回目の操作で人 22 と人 33 の位置を入れ替える。操作後の並び方は (2,3,1)(2, 3, 1) となる。 33 回目の操作で人 11 と人 33 の位置を入れ替える。操作後の並び方は (2,1,3)(2, 1, 3) となる。

操作の途中においては、前から ii 番目の人の服の色が cic_i と必ずしも一致しなくてもよいのに注意してください。

10 4
2 7 1 8 2 8 1 8 2 8
132