机器人(robot)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
小 T 正在参与“图灵信奥”的机器人挑战赛。他设计了一台自动扫地机器人,并将其放置在一个长度为 的走廊上进行测试。走廊的格子从左到右依次编号为 到 。其中,格子 和格子 是走廊两端的墙壁,标记为 X。中间的 个格子()分别标记为字符 。其中, 为 . 表示干净的格子,为 # 表示有灰尘的格子。
初始时,机器人位于格子 (),且朝向右方(即朝向编号增大的方向)。保证初始时格子 是干净的(即 一定是 .)。机器人启动后,每过 秒钟,就会向其当前朝向的方向移动 格。
走廊和机器人的清扫设定如下:
- 当机器人移动到标记为
X的墙壁格子时,机器人的朝向会立刻反转。 - 当机器人移动到标记为
.的干净格子时,不会发生任何变化,继续前进。 - 当机器人移动到标记为
#的有灰尘格子时,机器人的朝向会立刻反转,同时将该格子的灰尘清扫干净(字符变为.)。此后,即使机器人再次经过该格子,该格子也已被视作干净的格子,机器人的朝向不会再反转。
此外,机器人反转方向和清扫灰尘所耗费的时间可忽略不计。
现在给定走廊的初始状态和机器人的初始位置,请你编写程序,帮助小 T 计算:从机器人启动开始,直到走廊上所有标记为 # 的格子均被清扫干净(即所有的 # 均变为 .)所需的总秒数。
输入格式
从文件 robot.in 中读入数据。
输入的第一行包含两个正整数 和 ,分别表示中间走廊的长度和机器人的初始位置。
输入的第二行包含一个长度为 的字符串 ,其中第 个字符表示第 个格子初始时的状态 。
输出格式
输出到文件 robot.out 中。
输出一行包含一个整数,表示直到所有有灰尘的格子均变为 . 所需的秒数。
7 3
.#.#..#
8
样例 1 解释
随着时间的推移,走廊与机器人的状态将发生如下变化。我们将朝右移动的机器人所在的格子用 > 表示,将朝左移动的机器人所在的格子用 < 表示:
X.#>#..#X
X.#.<..#X
X.#<...#X
X.>....#X
X..>...#X
X...>..#X
X....>.#X
X.....>#X
X......<X
在第 8 秒后,所有的 # 都变成了 .,任务完成。
4 1
.#.#
7
样例 2 解释
状态变化如下:
X>#.#X
X.<.#X
X<..#X
>...#X
X>..#X
X.>.#X
X..>#X
X...<X
6 6
#####.
35
数据范围
对于所有测试数据,保证:,,,且字符串 中至少存在一个 #。
| 测试点 | 特殊性质 | |
|---|---|---|
| 无特殊性质 | ||