#P15598. [ICPC 2020 Jakarta R] Red Black Ball

[ICPC 2020 Jakarta R] Red Black Ball

题目描述

共有 N+MN + M 个变色球,它们拥有互不相同的编号,编号取值范围为 0010910^9(包含端点)。其中,NN 个球具有纯红色或纯黑色(称为有色球),而 MM 个球为无色球。当一个无色球与至少一个有色球一起放入容器时,它会变成红色或黑色。具体地,无色球将变成容器中编号最接近(即绝对值差最小)的那个有色球的颜色。如果有两个有色球的编号与无色球编号的绝对值差相等,则无色球将变成这两个有色球中编号较小的那个的颜色。

例如,假设容器中有 4 个有色球:(3,红色)(3,\text{红色})(6,黑色)(6,\text{黑色})(12,红色)(12,\text{红色})(14,黑色)(14,\text{黑色})。如果将一个 (9,无色)(9,\text{无色}) 球放入容器,它将变成黑色,因为 (6,黑色)(6,\text{黑色}) 是容器中与 (9,无色)(9,\text{无色}) 编号最接近的有色球。此后,容器中变为 5 个有色球:(3,红色)(3,\text{红色})(6,黑色)(6,\text{黑色})(9,黑色)(9,\text{黑色})(12,红色)(12,\text{红色})(14,黑色)(14,\text{黑色})。接着,再放入一个 (10,无色)(10,\text{无色}) 球,它将变成黑色,因为 (9,黑色)(9,\text{黑色}) 是容器中与 (10,无色)(10,\text{无色}) 编号最接近的有色球。此后,容器中变为 6 个有色球:(3,红色)(3,\text{红色})(6,黑色)(6,\text{黑色})(9,黑色)(9,\text{黑色})(10,黑色)(10,\text{黑色})(12,红色)(12,\text{红色})(14,黑色)(14,\text{黑色})。此例中,容器最终有 6 个有色球,其中红球 2 个,黑球 4 个。

注意,如果以不同的顺序放入无色球,最终结果可能会不同。在前面的例子中,如果先放入 (10,无色)(10,\text{无色}) 再放入 (9,无色)(9,\text{无色}),那么容器最终会有 4 个红球和 2 个黑球。

给定容器中的 NN 个有色球和 MM 个无色球,你的任务是计算将 所有 无色球放入容器,使得最终容器中 严格 红球多于黑球的方案数。两种方案被视为不同,当且仅当存在某个 ii,使得第 ii 个放入容器的无色球不同。注意,你只能一个一个地将无色球放入容器。

输入格式

输入第一行包含两个整数 NNMM1N,M501 \leq N, M \leq 50),分别表示有色球和无色球的数量。接下来 NN 行,每行包含一个整数和一个字符串:AiA_iSiS_i0Ai1090 \leq A_i \leq 10^9Si{RED,BLACK}S_i \in \{\text{RED}, \text{BLACK}\}),分别表示第 ii 个球的编号和颜色。下一行包含 MM 个整数:BiB_i0Bi1090 \leq B_i \leq 10^9),表示无色球的编号。保证没有两个球(无论有色或无色)具有相同编号,即 AB=N+M|A \cup B| = N + M,其中 AA 是有色球所有不同编号的集合,BB 是无色球所有不同编号的集合。

输出格式

输出一行一个整数,表示将所有的无色球放入容器后,最终容器中红球严格多于黑球的方案数,对 998244353998\,244\,353 取模。

2 3
1 BLACK
10 RED
2 5 7
3
2 3
1 RED
10 BLACK
2 4 7
6

提示

样例 #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 完成