AT_abc273_d [ABC273D] LRUD Instructions

题目描述

有一个 $H$ 行 $W$ 列的网格。自上而下的第 $i$ 行,自左而右的第 $j$ 列的格子记作格子 $(i,\,j)$。 有 $N$ 个格子 $(r_1,\,c_1),\ (r_2,\,c_2),\ \ldots,\ (r_N,\,c_N)$ 是墙。 一开始,高桥君位于格子 $(r_\mathrm{s},\,c_\mathrm{s})$。 高桥君会收到 $Q$ 条指令。对于 $i=1,2,\ldots,Q$,第 $i$ 条指令由一个字符 $d_i$ 和一个正整数 $l_i$ 组成。$d_i$ 是 `L`、`R`、`U`、`D` 之一,分别表示左、右、上、下四个方向。 对于第 $i$ 条指令,高桥君会重复以下操作 $l_i$ 次: > 如果当前位置在 $d_i$ 指定的方向上有一个不是墙的相邻格子,则移动到该格子。若没有这样的格子,则什么也不做。 请你对于 $i=1,2,\ldots,Q$,在执行完前 $i$ 条指令后,高桥君所在的格子 $(R_i,\,C_i)$ 输出在第 $i$ 行。

输入格式

输入以如下格式从标准输入读入: > $H$ $W$ $r_\mathrm{s}$ $c_\mathrm{s}$ > $N$ > $r_1$ $c_1$ > $r_2$ $c_2$ > $\vdots$ > $r_N$ $c_N$ > $Q$ > $d_1$ $l_1$ > $d_2$ $l_2$ > $\vdots$ > $d_Q$ $l_Q$

输出格式

输出 $Q$ 行。对于 $i=1,2,\ldots,Q$,在执行完前 $i$ 条指令后,高桥君所在的格子 $(R_i,\,C_i)$ 输出在第 $i$ 行。 > $R_1$ $C_1$ > $R_2$ $C_2$ > $\vdots$ > $R_Q$ $C_Q$

说明/提示

### 数据范围 - $2 \leq H,\,W \leq 10^9$ - $1 \leq r_\mathrm{s} \leq H$ - $1 \leq c_\mathrm{s} \leq W$ - $0 \leq N \leq 2 \times 10^5$ - $1 \leq r_i \leq H$ - $1 \leq c_i \leq W$ - $i \neq j \Rightarrow (r_i,\,c_i) \neq (r_j,\,c_j)$ - 对所有 $i=1,2,\ldots,N$,$(r_\mathrm{s},\,c_\mathrm{s}) \neq (r_i,\,c_i)$ - $1 \leq Q \leq 2 \times 10^5$ - $d_i$ 是 `L`、`R`、`U`、`D` 之一 - $1 \leq l_i \leq 10^9$ - 除 $d_i$ 外,所有输入均为整数 ### 样例解释 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 翻译