#2054. [ABC273D] LRUD Instructions

[ABC273D] LRUD Instructions

题目描述

有一个 H×WH\times W 的网格,其中有 NN 个位置有障碍物。

最初高桥在 (rs,cs)(r_\mathrm{s}, c_\mathrm{s}) 方格。

现在有 QQ 个问题,每个问题由一个字符 lil_i 和一个整数 did_i 构成。

  • li=Ll_i=L,意思向左前进 did_i 格。
  • li=Rl_i=R,意思向右前进 did_i 格。
  • li=Ul_i=U,意思向上前进 did_i 格。
  • li=Dl_i=D,意思向下前进 did_i 格。

在移动的过程中遇到以下两种情况会停止前进:

  • 下一个格子是一个障碍物。
  • 下一个格子会离开网格的范围。例如移动到第 H+1H+1 行。

现在每次询问,你需要回答移动后所处的位置。

输入格式

第一行输入四个整数分别是 H H W W rs r_\mathrm{s} cs c_\mathrm{s}

第二行输入一个整数 N N

接下来 NN 行,每行两个整数 r r c c 代表这里有一个障碍物

然后输入一个整数 Q Q

接下来 QQ 行,每行两个整数 d d l l 代表一种移动策略。

输出格式

输出一共输出 QQ 行,输出每次移动后的位置。

5 5 4 4
3
5 3
2 2
1 4
4
L 2
U 3
L 2
R 4
4 2
3 2
3 1
3 5
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
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)
  • (rs,cs)(ri,ci)(r_\mathrm{s}, c_\mathrm{s}) \neq (r_i, c_i) 为所有 i=1,2,,Ni = 1, 2, \ldots, N .
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • did_i 是字符 LRUD 中的一个。
  • 1li1091 \leq l_i \leq 10^9
  • did_i 之外的所有输入值均为整数。

样例 1 解释

给定的网格和高桥的初始位置如下,其中 # 表示有墙的方格,T 表示高桥所在的方格,. 表示其他方格:

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

根据第 11 个指令,高桥向左移动 22 个方格,最终到达 (4,2)(4, 2) 个方格,如下所示:

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

根据第 22 个指令,高桥首先向上移动了 11 个方格,然后他无法继续移动,因为他所在方向的相邻方格有一堵墙。结果,他最终下在了 (3,2)(3, 2) 位置,如下所示:

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

给定第 33 个指令,高桥首先向左移动 11 个方格,然后他无法移动,因为继续移动就会离开网格范围。结果,他最终下到了如下所示的 (3,1)(3, 1) 格:

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

根据第 44 个指令,高桥向右移动了 44 个方格,最终到达 (3,5)(3, 5) 个方格,如下所示:

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