AT_abc273_d [ABC273D] LRUD Instructions
题目描述
有一个 H 行 W 列的网格。自上而下的第 i 行,自左而右的第 j 列的格子记作格子 (i,j)。
有 N 个格子 (r1,c1), (r2,c2), …, (rN,cN) 是墙。
一开始,高桥君位于格子 (rs,cs)。
高桥君会收到 Q 条指令。对于 i=1,2,…,Q,第 i 条指令由一个字符 di 和一个正整数 li 组成。di 是 L、R、U、D 之一,分别表示左、右、上、下四个方向。
对于第 i 条指令,高桥君会重复以下操作 li 次:
如果当前位置在 di 指定的方向上有一个不是墙的相邻格子,则移动到该格子。若没有这样的格子,则什么也不做。
请你对于 i=1,2,…,Q,在执行完前 i 条指令后,高桥君所在的格子 (Ri,Ci) 输出在第 i 行。
输入格式
输入以如下格式从标准输入读入:
H W rs cs
N
r1 c1
r2 c2
⋮
rN cN
Q
d1 l1
d2 l2
⋮
dQ lQ
输出格式
输出 Q 行。对于 i=1,2,…,Q,在执行完前 i 条指令后,高桥君所在的格子 (Ri,Ci) 输出在第 i 行。
R1 C1
R2 C2
⋮
RQ CQ
输入输出样例 #1
输入 #1
5 5 4 4
3
5 3
2 2
1 4
4
L 2
U 3
L 2
R 4
输出 #1
4 2
3 2
3 1
3 5
输入输出样例 #2
输入 #2
6 6 6 3
7
3 1
4 3
2 6
3 4
5 5
1 1
3 2
10
D 3
U 3
L 2
D 2
U 3
D 3
U 3
R 3
L 3
D 1
输出 #2
6 3
5 3
5 1
6 1
4 1
6 1
4 1
4 2
4 1
5 1
说明/提示
数据范围
- 2≤H,W≤109
- 1≤rs≤H
- 1≤cs≤W
- 0≤N≤2×105
- 1≤ri≤H
- 1≤ci≤W
- i=j⇒(ri,ci)=(rj,cj)
- 对所有 i=1,2,…,N,(rs,cs)=(ri,ci)
- 1≤Q≤2×105
- di 是
L、R、U、D 之一
- 1≤li≤109
- 除 di 外,所有输入均为整数
样例解释 1
给定的网格和高桥君的初始位置如下。这里,# 表示墙,T 表示高桥君,. 表示其他格子。
...#.
.#...
.....
...T.
..#..
对于第 1 条指令,高桥君向左移动 2 格,位置变为 (4,2):
...#.
.#...
.....
.T...
..#..
对于第 2 条指令,高桥君向上移动 1 格后,因下一个位置是墙,后续 2 次“什么也不做”,最终位置为 (3,2):
...#.
.#...
.T...
.....
..#..
对于第 3 条指令,高桥君向左移动 1 格后,因下一个位置不存在,后续 1 次“什么也不做”,最终位置为 (3,1):
...#.
.#...
T....
.....
..#..
对于第 4 条指令,高桥君向右移动 4 格,最终位置为 (3,5):
...#.
.#...
....T
.....
..#..
由 ChatGPT 4.1 翻译