#aBC273Dif343. [ABC273D] LRUD Instructions

[ABC273D] LRUD Instructions

AT_abc273_d [ABC273D] LRUD Instructions

题目描述

有一个 HHWW 列的网格。自上而下的第 ii 行,自左而右的第 jj 列的格子记作格子 (i,j)(i,\,j)
NN 个格子 (r1,c1), (r2,c2), , (rN,cN)(r_1,\,c_1),\ (r_2,\,c_2),\ \ldots,\ (r_N,\,c_N) 是墙。

一开始,高桥君位于格子 (rs,cs)(r_\mathrm{s},\,c_\mathrm{s})

高桥君会收到 QQ 条指令。对于 i=1,2,,Qi=1,2,\ldots,Q,第 ii 条指令由一个字符 did_i 和一个正整数 lil_i 组成。did_iLRUD 之一,分别表示左、右、上、下四个方向。

对于第 ii 条指令,高桥君会重复以下操作 lil_i 次:

如果当前位置在 did_i 指定的方向上有一个不是墙的相邻格子,则移动到该格子。若没有这样的格子,则什么也不做。

请你对于 i=1,2,,Qi=1,2,\ldots,Q,在执行完前 ii 条指令后,高桥君所在的格子 (Ri,Ci)(R_i,\,C_i) 输出在第 ii 行。

输入格式

输入以如下格式从标准输入读入:

HH WW rsr_\mathrm{s} csc_\mathrm{s}
NN
r1r_1 c1c_1
r2r_2 c2c_2
\vdots
rNr_N cNc_N
QQ
d1d_1 l1l_1
d2d_2 l2l_2
\vdots
dQd_Q lQl_Q

输出格式

输出 QQ 行。对于 i=1,2,,Qi=1,2,\ldots,Q,在执行完前 ii 条指令后,高桥君所在的格子 (Ri,Ci)(R_i,\,C_i) 输出在第 ii 行。

R1R_1 C1C_1
R2R_2 C2C_2
\vdots
RQR_Q CQC_Q

输入输出样例 #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

说明/提示

数据范围

  • 2H,W1092 \leq H,\,W \leq 10^9
  • 1rsH1 \leq r_\mathrm{s} \leq H
  • 1csW1 \leq c_\mathrm{s} \leq W
  • 0N2×1050 \leq N \leq 2 \times 10^5
  • 1riH1 \leq r_i \leq H
  • 1ciW1 \leq c_i \leq W
  • ij(ri,ci)(rj,cj)i \neq j \Rightarrow (r_i,\,c_i) \neq (r_j,\,c_j)
  • 对所有 i=1,2,,Ni=1,2,\ldots,N(rs,cs)(ri,ci)(r_\mathrm{s},\,c_\mathrm{s}) \neq (r_i,\,c_i)
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • did_iLRUD 之一
  • 1li1091 \leq l_i \leq 10^9
  • did_i 外,所有输入均为整数

样例解释 1

给定的网格和高桥君的初始位置如下。这里,# 表示墙,T 表示高桥君,. 表示其他格子。

...#.
.#...
.....
...T.
..#..

对于第 11 条指令,高桥君向左移动 22 格,位置变为 (4,2)(4,\,2)

...#.
.#...
.....
.T...
..#..

对于第 22 条指令,高桥君向上移动 11 格后,因下一个位置是墙,后续 22 次“什么也不做”,最终位置为 (3,2)(3,\,2)

...#.
.#...
.T...
.....
..#..

对于第 33 条指令,高桥君向左移动 11 格后,因下一个位置不存在,后续 11 次“什么也不做”,最终位置为 (3,1)(3,\,1)

...#.
.#...
T....
.....
..#..

对于第 44 条指令,高桥君向右移动 44 格,最终位置为 (3,5)(3,\,5)

...#.
.#...
....T
.....
..#..

由 ChatGPT 4.1 翻译