AT_arc127_e [ARC127E] Priority Queue

题目描述

给定一个长度为 $A+B$ 的整数序列 $(X_1,X_2,\cdots,X_{A+B})$。$X$ 恰好包含 $A$ 个 $1$ 和 $B$ 个 $2$。 すぬけくん有一个集合 $s$,最开始 $s$ 为空。他将进行 $A+B$ 次操作,第 $i$ 次操作如下: - 当 $X_i=1$ 时:选择一个满足 $1\leq v\leq A$ 的整数 $v$,并将其加入 $s$。但之前已经选择过的整数不能再次选择为 $v$。 - 当 $X_i=2$ 时:从 $s$ 中删除当前的最大元素。保证在进行该操作前,$s$ 不为空。 请问最终可能得到多少种不同的 $s$ 集合?请将答案对 $998244353$ 取模后输出。

输入格式

输入通过标准输入给出,格式如下: > $A$ $B$ $X_1$ $X_2$ $\cdots$ $X_{A+B}$

输出格式

输出一个整数,表示最终可能得到的不同 $s$ 集合的数量,对 $998244353$ 取模。

说明/提示

## 限制条件 - $1\leq A\leq 5000$ - $0\leq B\leq A-1$ - $1\leq X_i\leq 2$ - 恰好有 $A$ 个 $i$ 满足 $X_i=1$。 - 恰好有 $B$ 个 $i$ 满足 $X_i=2$。 - 每次进行 $X_i=2$ 的操作前,$s$ 都不为空。 - 输入的所有值均为整数。 ## 样例解释 1 最终可能的 $s$ 集合有 $s=\{1,2\}$ 和 $s=\{1,3\}$ 共 $2$ 种。例如,按如下方式操作,最终 $s=\{1,3\}$: - $i=1$:向 $s$ 中加入 $2$。 - $i=2$:向 $s$ 中加入 $1$。 - $i=3$:从 $s$ 中删除 $2$。 - $i=4$:向 $s$ 中加入 $3$。 由 ChatGPT 4.1 翻译