AT_past202004_c 山崩し

题目描述

给定一个整数 $2 \leq N \leq 50$,有一个纵向 $N$ 行、横向 $2N-1$ 列的格子。 从上到下的第 $i$ 行,从左到右的第 $j$ 列的格子记作格子 $(i, j)$。 这个格子用黑白两色以**山型**方式涂色。具体来说,对于满足 $1 \leq i \leq N,\ 1 \leq j \leq 2N-1$ 且 $|j-N| < i$ 的格子 $(i, j)$ 被涂为黑色,其余格子为白色。 下面是 $N=5$ 时的例子。(`#` 表示黑色格子,`.` 表示白色格子) ``` ....#.... ...###... ..#####.. .#######. ######### ``` 接下来,在部分黑色格子上写上 `X`。 写入后的状态以一个由字符组成的大小为 $N \times (2N-1)$ 的二维数组 $S$ 给出,$S_{i,j}$ 表示格子 $(i, j)$ 的状态。若 $S_{i,j}$ 为 `X`,则格子 $(i, j)$ 是写有 `X` 的黑色格子;若 $S_{i,j}$ 为 `#`,则格子 $(i, j)$ 是未写 `X` 的黑色格子;若 $S_{i,j}$ 为 `.`,则格子 $(i, j)$ 是白色格子。 然后,按 $i = N-1, N-2, \cdots, 1$ 的顺序,进行如下操作: - 对于 $2 \leq j \leq 2N-2$,如果格子 $(i, j)$ 是黑色且未写 `X`,并且在格子 $(i+1, j-1), (i+1, j), (i+1, j+1)$ 中至少有一个写有 `X`,则在格子 $(i, j)$ 上写上 `X`。 请计算所有操作结束后的格子状态。

输入格式

输入通过标准输入给出,格式如下: > $N$ > $S_{1,1}S_{1,2}\cdots S_{1,2N-1}$ > $S_{2,1}S_{2,2}\cdots S_{2,2N-1}$ > $\vdots$ > $S_{N,1}S_{N,2}\cdots S_{N,2N-1}$

输出格式

所有操作结束后,格子 $(i, j)$ 的状态记为 $T_{i,j}$(黑色且写有 `X` 时为 `X`,黑色且未写 `X` 时为 `#`,白色时为 `.`),请按如下格式输出: > $T_{1,1}T_{1,2}\cdots T_{1,2N-1}$ > $T_{2,1}T_{2,2}\cdots T_{2,2N-1}$ > $\vdots$ > $T_{N,1}T_{N,2}\cdots T_{N,2N-1}$

说明/提示

### 注意 本题在 2020 年 5 月 2 日 18:00(日本标准时间)前禁止讨论。如有讨论,可能会被要求赔偿。 考试结束后可以公开总得分和认证等级,但请不要发布关于解题情况等信息。 ### 约束条件 - $2 \leq N \leq 50$ - $S_{i,j}$ 只可能为 `.`、`#` 或 `X` - $S$ 对应的格子状态,是在山型涂色的黑色格子中写入至少一个 `X` 得到的 由 ChatGPT 4.1 翻译