GP28462. 交替传送

提交3 通过2
通过率66.7%
文件IO启用
输入文件move.in
输出文件move.out
时间限制1000ms
内存限制512MiB
    ID: 14580 传统题 文件IO 输入文件:move.in 输出文件:move.out 1000ms 512MiB 尝试: 3 已通过: 2 难度: 普及- 上传者: 标签>模拟

题目描述

题目描述

小婷有一个 nn 行 mm 列的仓库。仓库中每个位置的情况用一个字符表示:

  • #:有一个货箱;
  • .:为空;
  • X:有一块固定挡板。

仓库的传送装置要运行 qq 轮,轮数从 11 开始计算:

  • 第 1,3,5,…1,3,5,\ldots 轮,货箱尝试向右移动一格;
  • 第 2,4,6,…2,4,6,\ldots 轮,货箱尝试向下移动一格。

每一轮开始时,先观察这一轮开始时的整个仓库。如果某个货箱要移动到的位置在仓库内,并且该位置此时为空,它就在这一轮移动一格;否则,它保持原位。所有货箱都根据这一轮开始时的状态同时决定是否移动,挡板始终不动。

本轮刚被其他货箱空出的位置,要到下一轮才能供货箱移入。 例如,一行中的 ##. 在一轮向右移动后会变成 #.#,而不是 .##。

每轮移动结束后,再以新的仓库状态开始下一轮。请输出 qq 轮中货箱移动的总次数,以及最后仓库的状态。一个货箱每移动一格,就计为一次移动。

输入格式

从文件 move.in 中读取数据。

第一行包含三个整数 n,m,qn,m,q,分别表示仓库的行数、列数和运行轮数。

接下来 nn 行,每行包含一个长度为 mm 的字符串,表示初始仓库的状态。各行从上到下给出,每行的字符从左到右给出。

输出格式

输出到文件 move.out 中。

第一行输出一个整数,表示所有轮中货箱移动的总次数。

接下来输出 nn 行,每行输出一个长度为 mm 的字符串,表示最后仓库的状态。

3 4 2
##..
.X#.
....
5
....
#X#.
...#
1 5 3
##.X.
2
.##X.

样例解释

样例 #1 中,第一轮向右移动,第一行右侧的货箱和第二行的货箱各移动一格,共移动 22 次。第一行左侧的货箱右边在这一轮开始时有另一个货箱,因此不能移动。第一轮结束后的仓库为:

#.#.
.X.#
....

第二轮向下移动,三个货箱的下方都为空,因此它们各移动一格,共移动 33 次。两轮一共移动 55 次。

样例 #2 中,第一轮后变为 #.#X.,有一个货箱移动。第二轮尝试向下移动,但仓库只有一行,没有货箱能够移动。第三轮后变为 .##X.,又有一个货箱移动,另一个货箱被挡板挡住。因此总共移动 22 次。

数据规模与约定

对于所有数据,保证:

  • 1≤n,m≤50, 1≤q≤1001\le n,m\le 50,\ 1\le q\le 100;
  • 每行字符串的长度均为 mm,且只包含 #、. 和 X;
  • 初始仓库中可以没有货箱,也可以没有空位置或挡板。

本题采用子任务捆绑计分:只有通过一个子任务的全部测试点,才能获得该子任务的分数。

子任务编号 分值 额外约束
11 2020 q=1q=1
22 3030 n=1n=1
33 5050 无特殊限制

下发文件

下载三组测试数据,非真实测试数据