#6494. B:跳跃 (Jump)

B:跳跃 (Jump)

题目 B:跳跃 (Jump)

属性 规格
时间限制 C++: 1.5s, Java: 3s, Python: 15s
内存限制 256 MB
最大分值 100 分

题目描述

青蛙 Hermit 喜欢在平台之间跳跃。他想知道从某个平台出发,是否可以通过一系列的行走和跳跃到达另一个平台。

  • 平台定义:平台是一条水平线段,其端点位于整数坐标上。
  • 移动规则
    1. 行走:Hermit 可以在当前平台上任意移动。
    2. 跳跃/下落:Hermit 可以从当前平台向上跳跃最多 HH 个单位到达新平台,或者向下坠落最多 HH 个单位到达新平台(再高会受伤)。
    3. 接触要求:跳跃或坠落不能从平台的边缘进行,两个平台之间必须有非零的水平重叠(即重叠部分必须是一个长度大于 0 的线段,仅端点接触不算)。

给定平台列表和若干查询,判断 Hermit 能否从平台 AA 到达平台 BB

输入格式

  • 第一行:三个整数 NN(平台数,105\le 10^5)、QQ(查询数,106\le 10^6)和 HH(跳跃高度,109\le 10^9)。
  • 接下来的 NN 行:每行三个整数 xi,yi,lix_i, y_i, l_i,分别表示第 ii 个平台左端点的坐标 (xi,yi)(x_i, y_i) 和长度 lil_i。右端点坐标为 (xi+li,yi)(x_i + l_i, y_i)。保证任意两个平台不重叠且不直接相邻。
  • 接下来的 QQ 行:每行两个整数 AiA_iBiB_i,表示一次查询。

输出格式

  • 对于每个查询,如果可以到达输出 YES,否则输出 NO

样例输入与输出

输入 1

3 2 3
2 5 3
4 4 2
0 1 4
1 2
3 2

输出 1

YES
NO