问题陈述
有一个大小为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个指令后将会到达的方块。
约束条件
- 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)
- (rs,cs)=(ri,ci)对于所有i=1,2,…,N。
- 1≤Q≤2×105
- di是字符
L
、R
、U
、D
中的一个。
- 1≤li≤109
- 输入中除了di之外的所有值都是整数。
输入
输入以以下格式从标准输入给出:
H W rs cs
N
r1 c1
r2 c2
⋮
rN cN
Q
d1 l1
d2 l2
⋮
dQ lQ
输出
输出Q行。对于i=1,2,…,Q,第i行应该包含高桥按照前i个指令后将会到达的方块(Ri,Ci),格式如下:
R1 C1
R2 C2
⋮
RQ CQ
示例输入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
给定的网格和高桥的初始位置如下,其中 #
表示有墙壁的方块,T
表示高桥所在的方块,.
表示其他方块:
...#.
.#...
.....
...T.
..#..
给定第1个指令,高桥向左移动2个方块,最终到达方块(4,2),如下所示:
...#.
.#...
.....
.T...
..#..
给定第2个指令,高桥先向上移动1个方块,然后因为他的方向上相邻的方块有墙壁而“什么也不做”两次。结果,他最终到达方块(3,2),如下所示:
...#.
.#...
.T...
.....
..#..
给定第3个指令,高桥先向左移动1个方块,然后因为他的方向上没有方块而“什么也不做”一次。结果,他最终到达方块(3,1),如下所示:
...#.
.#...
T....
.....
..#..
给定第4个指令,高桥向右移动4个方块,最终到达方块(3,5),如下所示:
...#.
.#...
....T
.....
..#..
示例输入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