CF1970F2 Playing Quidditch (Medium)

题目描述

今天下午,你决定出门感受春天的气息。当你走到魁地奇球场附近时,突然听到有人大喊。果然,又是在争谁赢了比赛!为了避免这一情况再次发生,你决定参与到比赛的判罚当中。 你留在体育场观看比赛,并记录得分。比赛结束时,你将宣布获胜者。 今天参赛的两支队伍是:红色的格兰芬多(R)和蓝色的拉文克劳(B)。每队有 $P$ 名球员($1 \leq P \leq 10$)。 场地是一个 $N$ 行 $M$ 列的矩形($3 \leq N, M \leq 99$,$N$ 和 $M$ 均为奇数)。所有位置都是整数值,并且允许多个实体同时位于同一位置。比赛开始时,场地上有两队的球门(每队有一个到五个球门)、球员以及一个鬼飞球。在这一版本的问题中,可能还会出现一个游走球。而在更难的版本中,还会有另一种球。 比赛由 $T$ 个步骤组成($0 \leq T \leq 10000$)。每一步中,场上的一个实体(球员或者球)都会执行一个动作。所有实体都可以移动。球员还可以接球或者投掷手中的鬼飞球。要接球,球员必须与球处于同一格子。当球员持有鬼飞球时,鬼飞球不会进行任何动作,只是随球员一起移动。如果球员决定投出鬼飞球,它将留在球员当前的位置。如果球员和游走球同时处于同一格子(无论是球员移动还是游走球移动导致的结果),该球员将被淘汰。如果球员被淘汰时正持球,鬼飞球将留在原地,与淘汰球员和游走球同处一格。可以保证不会在球员位于球门时发生这种情况。 想要得分,球员必须将鬼飞球放在对方的球门。当球员得分时,该球员的队伍获得一分,鬼飞球将立即移动至场地中央(从1开始计数的第 $(N+1)/2$ 行、第 $(M+1)/2$ 列)。中央没有球门。如果球员把球放进自家球门,那对方队伍将获得一分。

输入格式

第一行是两个整数表示场地大小:$N$ 和 $M$。 接下来是场地的描述:共 $N$ 行,每行有 $M$ 个字符对,以空格分隔。每个字符对表示场地上的一个位置,可以是以下形式之一: - `..` 表示空格 - `R0`, ..., `R9`, `B0`, ..., `B9` 表示球员。第一个字符是球员所在的队伍,第二个字符是球员的编号。每个字符对都是唯一的,但不保证所有可能的字符对都会出现在网格中。 - `RG` 或 `BG` 表示球门。蓝队尝试将球踢进红队球门(`RG`),而红队则尝试将球踢进蓝队球门(`BG`)。 - `.Q` 表示鬼飞球,这是球员用来得分的球。 - `.B` 表示游走球。 接下来的一行包含一个整数 $T$,表示构成比赛的动作数量。随后有 $T$ 行,每行描述一个动作。行中有多个信息,用空格分隔。首先是一对字符,表示执行动作的实体。接着是动作的描述: - `U`, `D`, `L`, `R` 表示实体在网格上的移动方向。可以分别向上(`U`)、向下(`D`)、向左(`L`)或向右(`R`)移动。每次只移动一个格子。 - `C` 表示球员接住了球(只有球员可以接球)。随后是一个空格和一个字符对,表示被接住的球。需要此信息,因为可能多个球在同一格子中。 - `T` 表示球员投出了携带的鬼飞球。 所有动作都是有效的:即球员始终在场地范围内,球员不会在非同格子时接球,不会在未携球时投球,等等。 ## ��出格式 你需要输出比赛中的主要事件,每行一个。具体事件包括: - 每次一支队伍得分时,你需要输出 `t RED GOAL` 或 `t BLUE GOAL`,取决于哪支队伍得分,其中 `t` 是当前动作位置(从0开始计数)。如果球员进错门(红队球员进红队球门,或蓝队球员进蓝队球门),则输出获分的另一队伍。 - 每次有球员被淘汰时,输出 `t p ELIMINATED`,其中 `t` 是当前时间 `p` 是被淘汰的球员。球员的格式与输入相同。 事件按 `t` 的升序输出。如果多名球员同时被淘汰,按字母顺序输出:`B0`, ..., `B9`, `R0`, ... `R9`。 比赛结束时,输出最终比分为:`FINAL SCORE: r b`,其中 `r` 和 `b` 分别是红队和蓝队的得分。

输出格式

You must output the description of the main events of the game, one event per line. More precisely: - Each time a team scores, you must print t RED GOAL or t BLUE GOAL, depending on the team who scored, where t is the current time (the position of the action in the list of actions, starting from 0). In the case where a player scores in the wrong goal (a red player scores in the red goal, or a blue player scores in the blue goal), you must print the name of the team who wins one point, that is, the other team. - Each time a player is eliminated, you must print t p ELIMINATED, where t is the current time and p is the player who is eliminated. The format to print the player is the same as in the input. The events must be printed in ascending order of t. If several players are eliminated at the same time, the events must be written in alphabetical order: B0, ..., B9, R0, ... R9. At the end of the game, you must print the final score as: FINAL SCORE: r b, where r is the score of the red team and b is the score of the blue team.

说明/提示

在第一个例子中,红队球员拿起鬼飞球,移动并投出。蓝队球员接住球,向红队球门进攻并取得分数。 在第二个例子中,红队球员拿球并不小心把它投入自家球门,结果蓝队得分。 在第三个例子中,游走球移动到 `R0` 的位置,导致 `R0` 被淘汰。随后,`B0` 也移到游走球的位置,结果 `B0` 也被淘汰。 **本翻译由 AI 自动生成**