#joi2021yo2a. [joi2021_yo2_a]往復すごろく (Round Sugoroku)
[joi2021_yo2_a]往復すごろく (Round Sugoroku)
问题描述
JOI 高校的葵购买了一个新的走格子游戏。这个走格子游戏是由 个方格按照横向排列而成的。这些方格从左边开始到右边分别标有编号从 到 。一开始,方格 和方格 上分别写有 X
,方格 () 上写有 。其中, 是字符 .
或 #
。
葵使用这个走格子游戏和一个棋子进行游戏。一开始,棋子被放置在方格 () 上,且面向右边。其中, 是字符 .
。每经过 秒,葵都会将棋子向当前面朝方向移动 个格子。
这个走格子游戏有如下规则:
- 当棋子站在标有
X
的方格时,棋子的朝向会翻转。 - 当棋子站在标有
.
的方格时,不会发生任何改变。 - 当棋子站在标有
#
的方格时,棋子的朝向会翻转,并且该方格上的字符会被修改为.
。因此,此后即使棋子站在该方格上,朝向也不会翻转。
需要注意的是,忽略棋子翻转和字符修改所需的时间。
给定走格子游戏和棋子的初始状态,编写一个程序来求解所有标有 #
的方格消失所需的时间。
约束条件
- 。
- 。
- 是字符
.
或#
()。 - 至少存在一个 (),使得 是字符
#
。
子任务
- ( 分) 。
- ( 分) 没有额外的约束。
输入
输入以以下格式从标准输入中给出。
其中, 是长度为 的字符串,第 个字符 () 是 。
输出
将标有 #
的方格全部消失所需的时间以一行输出到标准输出。
示例 1
7 3
.#.#..#
输出示例 1
8
随着时间的推移,走格子游戏的状态如下所示。其中,用 >
表示放置的向右的棋子,用 <
表示放置的向左的棋子。
X.#>#..#X
X.#.<..#X
X.#<...#X
X.>....#X
X..>...#X
X...>..#X
X....>.#X
X.....>#X
X......<X
因此,需要 秒才能使所有标有 #
的方格消失,所以输出为 。
示例 2
4 1
.#.#
输出示例 2
7
随着时间的推移,走格子游戏的状态如下所示。
X>#.#X
X.<.#X
X<..#X
>...#X
X>..#X
X.>.#X
X..>#X
X...<X
因此,需要 秒才能使所有标有 #
的方格消失,所以输出为 。
示例 3
6 6
#####.
输出示例 3
35