QOJ.ac

QOJ

Limite de temps : 1.0 s Limite de mémoire : 32 MB Points totaux : 50

#17578. 落石

Statistiques

Domeniko 已经在床上躺了将近两个星期,因为他的朋友 Nedjeljko 不小心把一块大石头砸在了他的左脚上。由于 Domeniko 已经解决了自 1998 年以来所有克罗地亚国家队选拔赛的题目,他必须找到一种新的消磨时间的方法。

Domeniko 的新游戏是在一个 $R \times C$ 的网格棋盘上进行的。起初,每个格子要么是空的,要么被障碍物(墙)阻挡。Domeniko 通过将一块石头放入某一列的最上方一行,然后让重力完成剩下的工作,从而将石头投入棋盘中。

重力的作用规则如下:

  • 如果石头下方的格子是墙,或者石头已经处于某一列的最底部一行,则石头停留在当前位置。
  • 如果石头下方的格子是空的,则石头移动到该格子。
  • 如果石头下方的格子包含另一块石头,则下落的石头可能会向侧面滑动:
    • 如果石头的左侧和左下方格子都是空的,则石头向左滑动一格。
    • 如果石头没有向左滑动,且右侧和右下方格子都是空的,则石头向右滑动一格。
    • 否则,石头停留在当前位置,且不再移动。

在前一块石头停止移动之前,Domeniko 绝不会投入下一块石头。

已知 Domeniko 依次将石头投入的列,请编写一个程序,画出 Domeniko 投完所有石头后的棋盘状态。

注意:Domeniko 绝不会将石头投入第一行不为空的列中。

输入格式

第一行包含两个整数 $R$ 和 $C$($1 \le R \le 30000$,$1 \le C \le 30$),表示棋盘的大小。

接下来的 $R$ 行,每行包含 $C$ 个字符,表示棋盘的初始布局。字符 . 表示空地,大写字母 X 表示被墙阻挡的格子。

下一行包含一个整数 $N$($1 \le N \le 100000$),表示 Domeniko 投入的石头数量。

接下来的 $N$ 行,每行包含一个 $1$ 到 $C$ 之间的整数,表示 Domeniko 投入石头的列(最左侧的列为第 $1$ 列)。

注意:在 $60\%$ 的测试数据中,$R$ 将不超过 $30$。

输出格式

输出 $R$ 行,每行包含 $C$ 个字符,表示棋盘的最终布局。石头应当用大写字母 O 表示。

样例

输入格式 1

5 4
....
....
X...
....
....
4
1
1
1
1

输出格式 1

....
O...
X...
....
OOO.

输入格式 2

7 6
......
......
...XX.
......
......
.XX...
......
6
1
4
4
6
4
4

输出格式 2

......
...O..
...XX.
......
.OO...
.XX...
O..O.O

说明

在第一个样例中,所有的石头都被投入到第一列:

  • 第一块石头停在墙(X)的上方。
  • 第二块石头落在第一块石头上,向右滑动,并停在第二列的底部。
  • 第三块石头先落在第一块石头上,再落在第二块石头上,向左滑动,并停在第一列的底部。
  • 第四块石头先落在第一块石头上,再落在第二块石头上,然后向右滑动。

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.