QOJ.ac

QOJ

Límite de tiempo: 1 s Límite de memoria: 1024 MB Puntuación total: 100

#4939. 红黑球

Estadísticas

总共有 $N + M$ 个颜色可变的球,编号在 $0$ 到 $10^9$ 之间(含边界)。其中,$N$ 个球具有固定的红色或黑色(称为有色球),$M$ 个球具有开放颜色。

当一个开放颜色的球被放入装有至少一个有色球的容器中时,它会转变为红色或黑色。具体来说,该开放颜色球会转变为容器中编号与该球编号最接近(即绝对差值最小)的有色球的颜色。如果存在两个有色球的编号与该开放颜色球编号的绝对差值相同,则该开放颜色球会转变为编号较小的那个有色球的颜色。

例如,假设容器中有 $4$ 个有色球:$(3, \text{red}), (6, \text{black}), (12, \text{red}), (14, \text{black})$。如果我们放入一个 $(9, \text{open})$ 球,它会变为黑色,因为 $(6, \text{black})$ 是容器中编号与 $(9, \text{open})$ 最接近的有色球。此后,容器中变为 $5$ 个有色球:$(3, \text{red}), (6, \text{black}), (9, \text{black}), (12, \text{red}), (14, \text{black})$。接下来,如果我们放入一个 $(10, \text{open})$ 球,它会变为黑色,因为 $(9, \text{black})$ 是容器中编号与 $(10, \text{open})$ 最接近的有色球。此后,容器中变为 $6$ 个有色球:$(3, \text{red}), (6, \text{black}), (9, \text{black}), (10, \text{black}), (12, \text{red}), (14, \text{black})$。在这个例子中,容器最终包含 $6$ 个有色球,其中 $2$ 个红色球和 $4$ 个黑色球。

注意,如果我们以不同的顺序放入开放颜色的球,最终结果可能会不同。在上面的例子中,如果我们先放入 $(10, \text{open})$ 再放入 $(9, \text{open})$,容器最终将包含 $4$ 个红色球和 $2$ 个黑色球。

给定容器中的 $N$ 个有色球和 $M$ 个开放颜色的球,你的任务是确定有多少种放入所有开放颜色球的顺序,使得容器最终的红色球数量严格多于黑色球数量。如果两种放入顺序中,第 $i$ 个放入的开放颜色球不同,则视为两种不同的方式。注意,你只能一个接一个地将开放颜色的球放入容器。

输入格式

输入的第一行包含两个整数:$N$ 和 $M$ ($1 \le N, M \le 50$),分别表示有色球的数量和开放颜色球的数量。接下来的 $N$ 行,每行包含一个整数和一个字符串:$A_i, S_i$ ($0 \le A_i \le 10^9; S_i \in \{\text{RED, BLACK}\}$),分别表示第 $i$ 个球的编号和颜色。 最后一行包含 $M$ 个整数:$B_i$ ($0 \le B_i \le 10^9$),表示开放颜色球的编号。 保证没有任何球(无论是有色球还是开放颜色球)具有相同的编号,即 $|A \cup B| = N + M$,其中 $A$ 是所有有色球编号的集合,$B$ 是所有开放颜色球编号的集合。

输出格式

输出一行一个整数,表示使得容器最终红色球数量严格多于黑色球数量的放入方式总数,结果对 $998\,244\,353$ 取模。

样例

样例输入 1

2 3
1 BLACK
10 RED
2 5 7

样例输出 1

3

说明 1

有 $3$ 种放入开放颜色球的方式使得容器最终红色球多于黑色球: $(2, \text{open}), (7, \text{open}), (5, \text{open}) \to 3$ 个红色球和 $2$ 个黑色球 $(7, \text{open}), (2, \text{open}), (5, \text{open}) \to 3$ 个红色球和 $2$ 个黑色球 * $(7, \text{open}), (5, \text{open}), (2, \text{open}) \to 3$ 个红色球和 $2$ 个黑色球

样例输入 2

2 3
1 RED
10 BLACK
2 4 7

样例输出 2

6

说明 2

无论如何放入所有开放颜色球,容器最终总是会有更多的红色球。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.