炮火轰炸
题号:NC299704
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

炮火轰炸
\hspace{15pt}Bingbong 有一个无限大的网格图,第 i 行第 j 列的坐标为 (i,j),现在给定 n 个炮火点,每个点的坐标为 (x_i,y_i),当两个炮火点满足 |x_1-x_2|\leq1 并且 |y_1-y_2|\leq 1,则认为两个炮火点连接在一起。这些炮火点可能连接出很多的炮火圈(即圈出一个封闭区域),也有可能没有炮火圈。若一个询问点无法通过连续的上下左右移动到达无穷远处(移动过程中不能经过炮火点),则认为该点位于炮火圈中。
\hspace{15pt}Bingbong 会询问 q 个坐标点 (a_i,b_i)(保证不为炮火点),对于每个点你需要单独回答其是否位于任意一个炮火圈中。

输入描述:

\hspace{15pt}第一行输入两个整数 n,q\left(4\leq n\leq 5\times 10^4;\, 1\leq q\leq 10^5\right),表示给定的炮火点个数和询问次数。
\hspace{15pt}此后 n 行,第 i 行输入两个整数 x_i,y_i\left(1\leq x_i,y_i\leq 10^6\right),表示第 i 个炮火点的坐标,保证每个炮火点坐标互不相同。
\hspace{15pt}此后 q 行,第 i 行输入两个整数 a_i,b_i\left(1\leq a_i,b_i\leq 10^6\right),表示第 i 次询问的坐标,保证不为炮火点。

输出描述:

\hspace{15pt}对于每一次询问,新起一行。若询问点位于任意一个炮火圈中,输出 \texttt{YES};否则输出 \texttt{NO}
示例1

输入

复制
4 2
1 2
2 1
2 3
3 2
2 2
1 1

输出

复制
YES
NO
示例2

输入

复制
21 5
1 3
1 8
2 4
2 5
2 6
2 7
2 9
2 10
3 6
3 11
4 4
4 8
4 9
4 11
5 3
5 5
5 6
5 7
5 10
5 11
6 4
4 10
5 4
3 10
3 8
6 9

输出

复制
NO
YES
NO
NO
NO

说明

\hspace{15pt}在这个样例中,炮火点分布如图所示,图中最左边一列数字代表行号,最上面一行数字代表列号,其余数字 i 表示第 i 次询问的位置。

炮火轰炸