P15598 [ICPC 2020 Jakarta R] Red Black Ball
题目描述
共有 $N + M$ 个变色球,它们拥有互不相同的编号,编号取值范围为 $0$ 到 $10^9$(包含端点)。其中,$N$ 个球具有纯红色或纯黑色(称为有色球),而 $M$ 个球为无色球。当一个无色球与至少一个有色球一起放入容器时,它会变成红色或黑色。具体地,无色球将变成容器中编号最接近(即绝对值差最小)的那个有色球的颜色。如果有两个有色球的编号与无色球编号的绝对值差相等,则无色球将变成这两个有色球中编号较小的那个的颜色。
例如,假设容器中有 4 个有色球:$(3,\text{红色})$、$(6,\text{黑色})$、$(12,\text{红色})$ 和 $(14,\text{黑色})$。如果将一个 $(9,\text{无色})$ 球放入容器,它将变成黑色,因为 $(6,\text{黑色})$ 是容器中与 $(9,\text{无色})$ 编号最接近的有色球。此后,容器中变为 5 个有色球:$(3,\text{红色})$、$(6,\text{黑色})$、$(9,\text{黑色})$、$(12,\text{红色})$ 和 $(14,\text{黑色})$。接着,再放入一个 $(10,\text{无色})$ 球,它将变成黑色,因为 $(9,\text{黑色})$ 是容器中与 $(10,\text{无色})$ 编号最接近的有色球。此后,容器中变为 6 个有色球:$(3,\text{红色})$、$(6,\text{黑色})$、$(9,\text{黑色})$、$(10,\text{黑色})$、$(12,\text{红色})$ 和 $(14,\text{黑色})$。此例中,容器最终有 6 个有色球,其中红球 2 个,黑球 4 个。
注意,如果以不同的顺序放入无色球,最终结果可能会不同。在前面的例子中,如果先放入 $(10,\text{无色})$ 再放入 $(9,\text{无色})$,那么容器最终会有 4 个红球和 2 个黑球。
给定容器中的 $N$ 个有色球和 $M$ 个无色球,你的任务是计算将 **所有** 无色球放入容器,使得最终容器中 **严格** 红球多于黑球的方案数。两种方案被视为不同,当且仅当存在某个 $i$,使得第 $i$ 个放入容器的无色球不同。注意,你只能一个一个地将无色球放入容器。
输入格式
输入第一行包含两个整数 $N$ 和 $M$($1 \leq N, M \leq 50$),分别表示有色球和无色球的数量。接下来 $N$ 行,每行包含一个整数和一个字符串:$A_i$ 和 $S_i$($0 \leq A_i \leq 10^9$;$S_i \in \{\text{RED}, \text{BLACK}\}$),分别表示第 $i$ 个球的编号和颜色。下一行包含 $M$ 个整数:$B_i$($0 \leq B_i \leq 10^9$),表示无色球的编号。保证没有两个球(无论有色或无色)具有相同编号,即 $|A \cup B| = N + M$,其中 $A$ 是有色球所有不同编号的集合,$B$ 是无色球所有不同编号的集合。
输出格式
输出一行一个整数,表示将所有的无色球放入容器后,最终容器中红球严格多于黑球的方案数,对 $998\,244\,353$ 取模。
说明/提示
#### 样例 #1 解释
共有 3 种方式将所有无色球放入容器,使得最终红球严格多于黑球。
- $(2,\text{无色}), (7,\text{无色}), (5,\text{无色}) \rightarrow$ 红球 3 个,黑球 2 个
- $(7,\text{无色}), (2,\text{无色}), (5,\text{无色}) \rightarrow$ 红球 3 个,黑球 2 个
- $(7,\text{无色}), (5,\text{无色}), (2,\text{无色}) \rightarrow$ 红球 3 个,黑球 2 个
#### 样例 #2 解释
无论以何种顺序放入所有无色球,容器最终总是红球多于黑球。
翻译由 DeepSeek 完成