luogu#P16558. [ICPC 2026 LAC] Late and Disobedient

[ICPC 2026 LAC] Late and Disobedient

题目描述

Nathan 正赶往公共不服从协会(PDA)的年度会议,已经迟到了。他以尽可能快的速度开车前往,却在红灯前被堵住了。由于时间紧迫,他还是想横穿马路(见免责声明)。当然,Nathan 并非蛮不讲理的人,只有在不伤害任何行人的足够空间时他才会横穿。在某个时刻 TT,Nathan “感觉” 自己可以安全地过马路,但他的感觉可能完全错误!

人行横道长 LL,可以建模为 xx 轴上从 x=0x = 0x=Lx = L 的一条线段。共有 NN 个行人在 xx 轴上,不一定位于人行横道上。每个行人有一个初始位置 XX 和一个恒定速度 VV(正或负),这意味着在任意时间 t0t \ge 0,该行人的位置为 X+tVX + t \cdot V

Nathan 的车宽为 CC。如果人行横道上两个相邻行人之间,或者行人与横道端点之间的间隙宽度至少为 CC,他就可以穿过马路。如果人行横道上没有行人,他也可以穿过。

你将收到 QQ 个查询。每个查询给出一个整数时间 T0T \ge 0,你需要判断 Nathan 能否在该时刻横穿马路。

免责声明:美洲程序员组织(PDA)不纵容闯红灯或违法行为。这是一个虚构故事,Nathan 的行为不代表该竞赛组织的观点。

输入格式

第一行包含三个整数 NNCCLL1N10001 \le N \le 10001CL1091 \le C \le L \le 10^9),分别表示行人的数量、Nathan 汽车的车宽以及人行横道的长度。

接下来 NN 行,每行描述一个行人,包含两个整数 XXVV109X,V109-10^9 \le X, V \le 10^9V0V \neq 0),分别表示该行人的初始位置和速度。没有两个行人的初始位置和速度完全相同(至少有一个不同)。

下一行包含一个整数 QQ1Q2×1061 \le Q \le 2 \times 10^6),表示查询的数量。

接下来的 QQ 行,每行包含一个整数 TT0T1090 \le T \le 10^9),表示要考察的时刻。给出的时间按递增顺序排列。

输出格式

对于每个查询输出一行,如果 Nathan 能在对应时刻横穿马路,则输出大写字母 “Y”,否则输出大写字母 “N”。

4 5 10
1 1
9 -1
-1 -1
11 1
3
0
3
4
Y
N
Y

提示

样例 1 解释:

该样例中 N=4N = 4 个行人,Nathan 车宽 C=5C = 5,人行横道长 L=10L = 10

T=0T = 0 时刻,行人的位置分别为 x1=1x_1 = 1x2=9x_2 = 9x3=1x_3 = -1x4=11x_4 = 11,因此 Nathan 可以横穿,因为 x1=1x_1 = 1x2=9x_2 = 9 之间存在宽度至少为 55 的间隙。

T=3T = 3 时刻,行人的位置分别为 x1=4x_1 = 4x2=6x_2 = 6x3=4x_3 = -4x4=14x_4 = 14,此时没有足够宽的间隙,Nathan 无法横穿。

最后,在 T=4T = 4 时刻,行人的位置分别为 x1=x2=5x_1 = x_2 = 5x3=5x_3 = -5x4=15x_4 = 15,Nathan 可以利用 x=0x = 0x1=x2=5x_1 = x_2 = 5 之间的间隙,或者 x1=x2=5x_1 = x_2 = 5x=L=10x = L = 10 之间的间隙横穿马路。

翻译由 DeepSeek V4 Pro 完成