P0420

[SCOI2007]折纸origami

[SCOI2007]折纸origami

桌上有一张边界平行于坐标轴的正方形纸片,左下角的坐标为 (0,0)(0,0),右上角的坐标为 (100,100)(100,100)。

接下来执行 nn 条折纸命令。每条命令用两个不同点 P1(x1,y1)P_1(x_1,y_1) 和 P2(x2,y2)P_2(x_2,y_2) 来表示,执行时把当前的折纸作品沿着 P1P2P_1P_2 所在直线折叠,并把有向线段 P1P2P_1P_2 的右边折向左边(左边的部分保持不变)。

折叠结束后,需要在作品上打一个孔,然后用绳子穿起来挂在墙上。孔的位置是相当重要的:若需要穿过太多层的纸,打孔本身比较困难;若穿过的层数太少,悬挂起来以后作品可能会被撕破。

为了选择一个比较合适的打孔位置,你需要计算在每个候选位置打孔时穿过的层数。如果恰好穿过某一层的边界(误差 10−610^{-6} 内),则该层不统计在结果中。

本题考虑一个简化的模型:纸的厚度不计,因此折纸操作总能完美执行。

输入格式

第一行为一个整数 nn,即折纸的次数。

以下 nn 行每行四个实数 x1,y1,x2,y2x_1, y_1, x_2, y_2,表示每次折纸时对应的有向线段。

下一行包含一个正整数 mm,即候选位置的个数。

以下每行包含两个实数 x,yx, y,表示一个候选位置。

输出格式

每个候选位置输出一行,包含一个整数,即该位置打孔时穿过的层数。

样例输入

2
-0.5 -0.5 1 1
1 75 0 75
6
10 60
80 60
30 40
10 10
50 50
20 50

样例输出

4
2
2
0
0
2

数据范围

  • 0≤n≤80\le n\le 8;
  • 1≤m≤501\le m\le 50。

来源与许可

本题为 SCOI 2007 试题「折纸origami」,题面与测试数据整理自 BZOJ 1074。

样例 1

输入

2
-0.5 -0.5 1 1
1 75 0 75
6
10 60
80 60
30 40
10 10
50 50
20 50

输出

4
2
2
0
0
2