#C2026XSR3F. 巡检小车(patrol)

巡检小车(patrol)

文件输入输出提示

本题采用文件输入输出。提交代码时,请在 main 函数开头加入文件重定向,并从 patrol.in 读入、输出到 patrol.out

freopen("patrol.in", "r", stdin);
freopen("patrol.out", "w", stdout);

题目描述

苗苗正在调试一辆校园机房巡检小车。机房被划分为 HHWW 列的网格。每个格子要么可以通行,要么是障碍。

一辆巡检小车从给定位置出发,按顺序尝试执行一串移动指令。每条指令是下面四种字符之一:

  • U:向上移动一格;
  • D:向下移动一格;
  • L:向左移动一格;
  • R:向右移动一格。

对每条指令:

  • 如果目标格在网格内,且不是障碍,小车就移动过去。
  • 否则,这条指令被忽略,小车留在原地。

请输出所有指令执行结束后小车的位置,以及一共有多少条指令被忽略。

输入格式

从文件 patrol.in 中读入数据。

第一行输入两个整数 H,WH,W

第二行输入两个整数 r,cr,c,表示小车初始位于第 rr 行第 cc 列。行和列均从 11 开始编号。

接下来 HH 行,每行一个长度为 WW 的字符串,表示网格。字符 . 表示可以通行,字符 # 表示障碍。

最后一行输入一个字符串 ss,表示移动指令。

输出格式

输出到文件 patrol.out 中。

输出一行三个整数,分别表示小车最终所在的行号、列号和被忽略的指令数量。

输入输出样例 #1

输入 #1

5 6
2 2
......
..#...
......
.#....
......
RRDDLLUU

输出 #1

1 1 4

说明/提示

前两条 R 指令都会尝试走到障碍格,因此被忽略。

之后小车向下走到第 3 行第 2 列,再尝试向下走到第 4 行第 2 列时遇到障碍,该指令也被忽略。

接着小车向左走到第 3 行第 1 列,再继续向左会走出网格,该指令被忽略。

最终小车停在第 1 行第 1 列,共有 4 条指令被忽略。

输入输出样例 #2

输入 #2

3 3
1 1
...
...
...
RRDDLLUU

输出 #2

1 1 0

数据范围与子任务

对于所有数据,满足:

  • 1H,W10001\le H,W\le 1000
  • H×W106H\times W\le 10^6
  • 初始位置一定不是障碍;
  • 1s2×1051\le \lvert s\rvert\le 2\times 10^5
  • ss 仅由字符 UDLR 组成。
测试点编号 网格限制 指令长度限制 特殊性质
121\sim 2 H,W10H,W\le 10 s20\lvert s\rvert\le 20 无障碍
343\sim 4 H,W30H,W\le 30 s1000\lvert s\rvert\le 1000
575\sim 7 H×W105H\times W\le 10^5 s105\lvert s\rvert\le 10^5
8108\sim 10 H,W1000, H×W106H,W\le 1000,\ H\times W\le 10^6 s2×105\lvert s\rvert\le 2\times 10^5

patrol_大样例.zip