#L3063. 「ROI 2016 Day1」人烟之山

「ROI 2016 Day1」人烟之山

题目描述

译自 ROI 2016 Day1 T4. Обитаемые горы

基于斯特鲁伽茨基兄弟的小说《人烟之岛》。

某地地形可用 nn 段折线来表示(下文称之为多段线),这 nn 段折线连接了 n+1n+1 个拐点,且保证没有垂直线。我们将拐点从左到右依次编为 0n0 \ldots n 号。我们将最左侧的点(即 00 号点)设为原点,然后给出每一段的射影长度(即该线段的两个端点的横坐标之差)和斜率。保证 nn 号点的纵坐标为 00

在某些位置将建起瞭望塔,瞭望塔上有一个或一些瞭望台。假设已知点 AA 和点 BB,如果线段 ABAB 上没有点严格位于多段线以下,那么我们称点 AA 可以看到点 BB

该地共有 qq 个瞭望台。给出所有瞭望台的位置。对于 j=1qj=1 \ldots q,试求:从 jj 号瞭望台的塔基向左 / 右走,一直走到什么地方时还能看到该瞭望台,而再走远一点点就看不到了。(我们称之为该瞭望台的视界。)

输入格式

第一行有两个整数 n,qn, q
第二行有一个整数 CC,保证 C=104C=10^410910^9。这个数会提示下面输入的数据的范围。
接下来 nn 行,每行两个整数 di,kid_i, k_i $(1 \leqslant d_i \leqslant C, -C \leqslant k_i \leqslant C)$。
接下来 qq 行,每行两个整数 uj,vju_j, v_j $(0 \leqslant u_j \leqslant C, -C \leqslant v_j \leqslant C)$,表示瞭望台的坐标。

输出格式

qq 行,每行两个整数,表示该瞭望台的视界。

样例 1

输入

6 1
3 1
2 -1
1 1
1 -1
1 1
2 -1
5 3

输出

3 8

样例 2

输入

5 3
1 1
1 -2
2 0
2 1
1 -1
3 0
3 5
3 3

输出

1 6
0 7
0 6

样例 3

输入

6 4
1 2
2 -2
1 1
1 -2
4 1
1 -1
1 4
3 4
10 4
7 4

输出

0 4
1 9
4 10
1 10

样例 4

输入

8 4
1 -3
2 0
1 1
2 0
1 -3
1 3
1 2
1 0
2 -2
6 -1
6 4
7 -4

输出

0 6
4 9
0 10
6 9

数据范围与提示

子任务 分值 1n,q1 \leqslant n, q \leqslant C=C= 额外条件 依赖子任务
1 9 100 10410^4 ki=±1k_i = \pm 1
2 1
3 10 3000 10910^9 1, 2
4 11 10510^5 ki=±1k_i = \pm 1 1
5 所有瞭望台都在同一个瞭望塔上
6 12 所有瞭望塔上最高的瞭望台的海拔相同
7 21 1–6
8 17 4×1054 \times 10^5 1–7