猫猫虫困境III
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

在二维整数网格 \mathbb{Z}^2 上,有 n 只猫猫虫,第 i 只初始位于非负整数坐标 (x_i,y_i)
平面上固定有一个黑洞,其中心坐标为 (0,0)
此外,平面上给定 m 个出口,出口的坐标分别为非负整数坐标 (u_j,v_j)

时间离散为 t=0,1,2,\dots,所有未离开的猫猫虫随时间推移在每个整数时刻顺序进行如下三个阶段:
  1. 主动移动阶段:每只猫猫虫可以选择不动,或沿轴向主动移动一个单位(将 x 增减 1 或将 y 增减 1,两者不可同时进行)。假设猫猫虫此刻坐标为(x,y),那么其在该阶段可以移动到\{(x+1,y),(x-1,y),(x,y+1),(x,y-1)\} 中的一个位置。
  2. 吸引阶段:对于仍未离开的猫猫虫,黑洞会将其同时在两个坐标方向上各向黑洞靠近一个单位。
    若其此时位置为 (x,y),则更新为(x-sgn(x), y-sgn(y))
    其中sgn(x)为符号函数。具体地,当x<0 时,sgn(x) = -1; 当x=0 时,sgn(x)=0;当x>0 时,sgn(x)=1 .
  3. 判定阶段:判定此时所有还未离开的猫猫虫的位置,所有与出口位置重合的猫猫虫立即离开。一旦猫猫虫离开,便不再参与任何阶段。
多只猫猫虫互不影响;出口可以被多只猫猫虫在不同或相同时间使用。不要求出口两两不同;多只猫猫虫可以有相同的初始位置;猫猫虫的初始位置可以与出口重合,但不代表其可以直接离开

你的任务是判断对每一只猫猫虫,是否存在一种策略,使其在有限时间内离开。

输入描述:

第一行包含两个整数 n,m1\le n,m\le 2\times 10^5),分别代表猫猫虫数量与出口数量;

接下来 n 行,第 i 行包含两个整数 x_i,y_i0 \le x_i,y_i\le 10^9),代表第 i 只猫猫虫的初始位置;

接下来 m 行,第 j 行包含两个整数 u_j,v_j0 \le u_j,v_j\le 10^9),代表第 j 个出口的位置。

输出描述:

输出 n 行。第 i 行输出'YES'或'NO',表示第 i 只猫猫虫是否能在某种策略下最终离开。
示例1

输入

复制
5 3
2 0
1 0
0 0
4 3
0 2
1 0
0 1
3 2

输出

复制
YES
YES
NO
YES
YES
示例2

输入

复制
4 2
1 2
0 1
6 1
1 100
1 1
5 0

输出

复制
YES
NO
YES
YES