AT_past18_i 改行コード
题目描述
有一个文本编辑器,可以看作是一个向右和向下无限延伸的网格。编辑器中,自顶向下的第 $i$ 行、从左往右的第 $j$ 列的单元格记作 $(i, j)$。每个单元格可以写入一个字符,也可以为空;初始时所有单元格都为空。
编辑器还有一个被称作**光标**的标记,表示插入字符的位置。光标最初位于 $(1, 1)$。
你需要按给定顺序处理 $Q$ 次操作。每个操作有以下三种类型之一:
- $1\ c$:在光标当前位置插入字符 $c$。具体执行如下步骤:
- 首先,将光标当前单元格以及同一行该单元格右侧的所有字符(如果有)都向右移动一格。
- 然后,在光标当前位置写入字符 $c$。
- 最后,将光标向右移动一格。
- $2$:将光标移动到当前行的最左侧单元格。
- $3$:将光标移动到当前行的下一行最左侧单元格。
请在所有操作处理完成后输出编辑器的状态。
输入格式
输入按以下格式给出,其中 $\mathrm{query}_i$ 表示第 $i$ 个操作:
$Q$
$\mathrm{query}_1$
$\mathrm{query}_2$
$\vdots$
$\mathrm{query}_Q$
输出格式
- 设所有操作结束后,光标的位置为 $(H, W)$。
- 设第 $i$ 行有 $C_i$ 个字符。
- 记 $S_{i, j}$ 为写在 $(i, j)$ 位置上的字符。
请按照以下格式输出共 $H+1$ 行。(注意某些行可能 $C_i = 0$。)
注意:第二行及之后的每一行需以 `#` 和一个空格开头。
$H\ W$
# $S_{1, 1}S_{1, 2}\dots S_{1, C_1}$
# $S_{2, 1}S_{2, 2}\dots S_{2, C_2}$
$\vdots$
# $S_{H, 1}S_{H, 2}\dots S_{H, C_H}$
说明/提示
### 样例解释 1
按顺序处理操作如下:
- 第 1 次操作,在 $(1, 1)$ 写入 `b`,光标移到 $(1, 2)$。
- 第 2 次操作,在 $(1, 2)$ 写入 `c`,光标移到 $(1, 3)$。
- 第 3 次操作,在 $(1, 3)$ 写入 `d`,光标移到 $(1, 4)$。
- 第 4 次操作,将光标移到 $(1, 1)$。
- 第 5 次操作,同时将 $(1, 1)$ 的 `b`、$(1, 2)$ 的 `c`、$(1, 3)$ 的 `d` 向右各移动一格。在 $(1, 1)$ 写入 `a`,光标移到 $(1, 2)$。
- 第 6 次操作,将光标移到 $(2, 1)$。
- 第 7 次操作,将光标移到 $(3, 1)$。
- 第 8 次操作,在 $(3, 1)$ 写入 `e`,光标移到 $(3, 2)$。

### 数据范围
- $1 \leq Q \leq 1.5 \times 10^6$
- $c$ 为小写英文字母。
由 ChatGPT 5 翻译