P14208 [ROI 2016 Day1] 人烟之山

题目背景

**译自 [ROI 2016](http://neerc.ifmo.ru/school/archive/2015-2016.html) Day1 T4.** ***[Обитаемые горы](http://neerc.ifmo.ru/school/archive/2015-2016/ru-olymp-roi-2016-day1.pdf)*** 改编自 Arkadi Strugatsky 与 Boris Strugatsky 的科幻中篇《人烟之岛》。

题目描述

不知名之父国的政$ $府计划在与洪提亚接壤的多山地区修建一座反弹道防御塔。 该地区的一段山脉以一条折线表示,这条折线由 $n$ 个线段组成,依次连接 $n + 1$ 个顶点,这些顶点按 $x$ 坐标递增排列。顶点编号为 $0$ 到 $n$,线段编号为 $1$ 到 $n$,其中第 $i$ 个线段连接编号为 $i - 1$ 与 $i$ 的两个顶点。 顶点编号 $0$ 位于点 $(0, 0)$。第 $i$ 个线段由其在水平轴上的投影长度 $d_i$ 与斜率 $k_i$ 给出。于是,若编号为 $i - 1$ 的顶点坐标为 $(x_{i-1}, y_{i-1})$,则第 $i$ 个顶点的坐标可按如下计算:$(x_{i-1} + d_i, y_{i-1} + k_i \cdot d_i)$。最后一个顶点的 $y$ 坐标为 $0$,即 $y_n = 0$。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/fw6eac5p.png) ::: 若点 $A$ $(x_A, y_A)$ 到点 $B$ $(x_B, y_B)$ 的线段上**没有任何一点**位于折线**下方**(严格意义上),则称点 $A$ 从点 $B$ 是**直线可见**的。 塔是一条垂直的非零长度线段,其下端点位于折线上。若塔的上端点处于某位公民的直线可见范围内,则该公民感到安全。 设塔的上端点在 $(x, y)$。考虑两名侦察兵,他们从塔的下端点分别向西($x$ 坐标减小方向)与向东($x$ 坐标增大方向)出发。每名侦察兵沿着山脉表面奔跑,直到进一步移动会使塔的上端点离开其直线可见范围,或直到到达山脉的边界为止。 政$ $府准备了 $m$ 种塔的位置方案,每个方案由两个整数 $(u_j, v_j)$ 表示——即塔的上端点坐标。要求编写程序,对每个方案分别确定两名侦察兵能跑到的点的 $x$ 坐标。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 400\,000$)——折线的线段数量以及塔的位置方案数量。 随后的输入约束取决于常数 $C$ 的取值,$C$ 可为 $10^4$ 或 $10^9$,具体由子任务决定(见评分表)。 接下来的 $n$ 行中,每行包含两个整数 $d_i, k_i$($1 \le d_i \le C$;$-C \le k_i \le C$)——第 $i$ 个线段在水平轴上的投影长度与斜率($0 = x_0 < x_1 < \cdots < x_i < \cdots < x_n \leq C$;$y_0 = y_n = 0$;$-C \le y_i \le C$)。 接下来的 $m$ 行中,每行包含两个整数 $u_j, v_j$($0 \leq u_j \leq C$,$-C \leq v_j \leq C$)——第 $j$ 个方案中塔的上端点坐标。

输出格式

输出共 $m$ 行,每行包含两个整数 $l_j$ 与 $r_j$——分别为第 $j$ 个方案中向西和向东奔跑的侦察兵能到达的点的 $x$ 坐标。保证 $l_j$ 与 $r_j$ 都为整数。

说明/提示

### 样例解释 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/g19b7mbw.png) 样例 1 示意 ::: 请注意,根据题目中的定义,线段 $(6, 2)$ 与 $(7, 1)$ 之间的所有点均处于塔的上端点的直线可见范围内。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/rg0e5ji2.png) 样例 2 示意 ::: 在该测试中,所有方案的塔的下端点都位于同一点。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/kwoq3rqt.png) 样例 3 示意 ::: 在该测试中,所有方案的塔的上端点都位于同一条水平直线上。请注意,塔的下端点可以位于山脉链的端点处。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/6rt0kqqc.png) 样例 4 示意 ::: 在第四个测试中说明,在不知名之父国,整条山脉链可能完全位于其两端点的高度之下。 ### 数据范围 | 子任务编号 | 分值 | $n, m$ | $C$ | 其他限制 | 必须通过的子任务 | |:--:|:--:|:--:|:--:|:--:|:--:| | 1 | 9 | $1 \le n, m \le 100$ | $C = 10^4$ | $k_i = \pm 1$ | | | 2 | 9 | $1 \le n, m \le 100$ | $C = 10^4$ | | 1 | | 3 | 10 | $1 \le n, m \le 3000$ | $C = 10^9$ | | 1, 2 | | 4 | 11 | $1 \le n, m \le 100\,000$ | $C = 10^9$ | $k_i = \pm 1$ | 1 | | 5 | 11 | $1 \le n, m \le 100\,000$ | $C = 10^9$ | 所有塔的下端点重合 | | | 6 | 12 | $1 \le n, m \le 100\,000$ | $C = 10^9$ | 所有塔的上端点共线于同一条水平直线上 | | | 7 | 21 | $1 \le n, m \le 100\,000$ | $C = 10^9$ | | 1–6 | | 8 | 17 | $1 \le n, m \le 400\,000$ | $C = 10^9$ | | 1–7 | 翻译由 ChatGPT-5 完成