#P15598. [ICPC 2020 Jakarta R] Red Black Ball
[ICPC 2020 Jakarta R] Red Black Ball
题目描述
共有 个变色球,它们拥有互不相同的编号,编号取值范围为 到 (包含端点)。其中, 个球具有纯红色或纯黑色(称为有色球),而 个球为无色球。当一个无色球与至少一个有色球一起放入容器时,它会变成红色或黑色。具体地,无色球将变成容器中编号最接近(即绝对值差最小)的那个有色球的颜色。如果有两个有色球的编号与无色球编号的绝对值差相等,则无色球将变成这两个有色球中编号较小的那个的颜色。
例如,假设容器中有 4 个有色球:、、 和 。如果将一个 球放入容器,它将变成黑色,因为 是容器中与 编号最接近的有色球。此后,容器中变为 5 个有色球:、、、 和 。接着,再放入一个 球,它将变成黑色,因为 是容器中与 编号最接近的有色球。此后,容器中变为 6 个有色球:、、、、 和 。此例中,容器最终有 6 个有色球,其中红球 2 个,黑球 4 个。
注意,如果以不同的顺序放入无色球,最终结果可能会不同。在前面的例子中,如果先放入 再放入 ,那么容器最终会有 4 个红球和 2 个黑球。
给定容器中的 个有色球和 个无色球,你的任务是计算将 所有 无色球放入容器,使得最终容器中 严格 红球多于黑球的方案数。两种方案被视为不同,当且仅当存在某个 ,使得第 个放入容器的无色球不同。注意,你只能一个一个地将无色球放入容器。
输入格式
输入第一行包含两个整数 和 (),分别表示有色球和无色球的数量。接下来 行,每行包含一个整数和一个字符串: 和 (;),分别表示第 个球的编号和颜色。下一行包含 个整数:(),表示无色球的编号。保证没有两个球(无论有色或无色)具有相同编号,即 ,其中 是有色球所有不同编号的集合, 是无色球所有不同编号的集合。
输出格式
输出一行一个整数,表示将所有的无色球放入容器后,最终容器中红球严格多于黑球的方案数,对 取模。
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 完成