下落的小球
题号:NC212143
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

二维平面的第一象限内有 n 条线段,其斜率均为 1 或 -1。保证相同斜率的线段无交(含端点)。
有 m 次询问,每次从一个位置释放一个小球,小球可以视为一个点。小球会下落(即朝着 y 坐标减小的方向),分为三种情况:
    1. 当小球不与任何线段重合或者位于恰好一条线段的下端点时,竖直向下移动。
    2. 当小球在恰好一条线段上(不含下端点),沿着该线段向下移动。
    3. 当小球与两条线段重合时(位于交叉点上),停止运动。
对于每个询问,你需要求出小球是否会在有限时间内停止运动。

输入描述:

第一行两个整数 n,m。

接下来 n 行,第 i 行三个正整数 a_i,b_i,c_i,表示第 i 条线段的上端点坐标是 (a_i,b_i),下端点的坐标是 。保证相同斜率的线段无交(含端点)。

接下来 m 行,第 i 行两个正整数 x_i,y_i,表示第 i 次询问的小球初始坐标是 (x_i,y_i)

输出描述:

一行长为 m 的字符串,第 i 位是 1 表示第 i 次询问时小球不会停止,0 表示会停止。
示例1

输入

复制
6 6
1 2 2
2 3 4
3 3 2
4 3 5
4 5 3
5 2 4
1 2
2 2
2 3
4 5
5 2
5 4

输出

复制
110000

说明

备注: