题目描述
長さ A+B の整数列 (X1,X2,⋯,XA+B) が与えられます. X はちょうど A 個の 1 とちょうど B 個の 2 を含みます.
すぬけくんは集合 s を持っており,最初 s は空です. 彼は今から,A+B 回の操作を行います. i 回目の操作は以下のような行動です.
- Xi=1 の時: 1 ≤ v ≤ A を満たす整数 v を選び,s に追加する. ただし,今までの操作で選んだことのある整数は v として選べない.
- Xi=2 の時: s の中で最大値となる要素を削除する. なお,この操作の直前に s が空でないことは入力から保証される.
最終的な s としてありうる集合は何通りあるでしょうか? 答えを 998244353 で割った余りを求めてください.
输入格式
入力は以下の形式で標準入力から与えられる.
A B X1 X2 ⋯ XA+B
输出格式
答えを 998244353 で割った余りを出力せよ.
题目大意
给定一个长度为 a+b 的序列 x,并且刚好有 a 个 1,b 个 2。
有一个集合 s,初始是空的,将会做 a+b 次操作,第 i 次操作如下:
- xi=1,选择一个数 v∈[1,a],并把这个数加入到集合中,这里 v 必须是之前没有选择过的数
- xi=2,将集合中最大的数删掉
问最后 s 能有几种状态。
- 1≤a,b≤5000
3 1
1 1 2 1
2
20 6
1 1 1 1 1 2 1 1 1 2 1 2 1 2 1 2 1 1 1 1 2 1 1 1 1 1
5507
提示
制約
- 1 ≤ A ≤ 5000
- 0 ≤ B ≤ A−1
- 1 ≤ Xi ≤ 2
- Xi=1 を満たす i がちょうど A 個存在する.
- Xi=2 を満たす i がちょうど B 個存在する.
- Xi=2 の操作を行う直前で s は空ではない.
- 入力される値はすべて整数である.
Sample Explanation 1
最終的な s としてありうる状態は,s={1,2},{1,3} の 2 通りです. 例えば,以下のように操作すると,最終的に s={1,3} となります. - i=1: s に 2 を追加する. - i=2: s に 1 を追加する. - i=3: s から 2 を削除する. - i=4: s に 3 を追加する.