atcoder#AGC054C. [AGC054C] Roughly Sorted
[AGC054C] Roughly Sorted
配点 : 点
問題文
すぬけくんは, の順列 と整数 をもらいました. そこですぬけくんは, の隣接する二項をswapすることを繰り返して,以下の条件が満たされるようにしました.
- それぞれの について, , を満たす が高々 個である.
ここで,すぬけくんは最小の操作回数でこの条件を達成しました.
すべての操作が終わったあと,すぬけくんは元の順列を忘れてしまいました. 操作後の順列 が与えられるので,元の順列 としてあり得るものが何通りあるかを で割った余りを求めてください.
制約
- ()
- それぞれの について, , を満たす が高々 個である
- 入力される値はすべて整数である
入力
入力は以下の形式で標準入力から与えられる.
出力
答えを出力せよ.
3 1
3 1 2
2
として考えられるのは以下の 通りです.
- : 最小の操作回数は 回です.操作後の順列は に一致します.
- : 最小の操作回数は 回です. と をswapすることで, となり,これは条件を満たします.操作後の順列は に一致します.
4 3
4 3 2 1
1
5 2
4 2 1 5 3
3