#P2616. Origami

Origami

描述

折纸是一种古老的日本艺术,它将单张纸折叠成动物、花朵以及其他形状。最近,人们制造出了一台可编程的机器,用来制作一些较为简单的折纸作品。这台机器有一块大的板子,上面画有坐标系。首先,将一张正方形的纸放置在板子上,使得纸的左下角坐标为(0,0)(0, 0),右上角坐标为(100,100)(100, 100)。然后,机器按照程序运行。该程序由若干步骤组成。每一步都由坐标系中的一条直线来表示,沿着这条直线对折纸张。这条直线由两个点来表示:当从第一个点朝向第二个点看时,纸张从右向左折叠。直线左边的纸张保持不动,右边的纸张则平展地折叠在左边纸张的上面。在执行完最后一步后,就得到了最终的折纸作品。为了给折纸作品打一个用于悬挂的孔,需要在上面穿孔。仔细选择穿孔的位置非常重要,因为如果在这个位置折纸的层数太厚,就很难穿孔;而如果层数太薄,又不足以承受悬挂的重量。你的任务是编写一个程序,计算给定的点处纸张的层数。

输入 输入文件的第一部分包含折纸机器的程序。第一行包含程序的步骤数。接下来每行对应程序的一个步骤。每行包含折痕线的坐标x1x_1y1y_1x2x_2y2y_2(实数),这些坐标之间用空格分隔。该程序最多包含8个步骤。输入文件的第二部分包含几个可能的穿孔位置。第一行包含这样的位置的数量,接下来的每一行包含一个点的坐标。

输出 对于每一个可能的穿孔位置,输出一行,包含在该点处穿过的纸张层数。注意:假设纸张的厚度为零,因此可以理想地折叠。所穿的孔是一个单点。恰好穿在纸张边缘或折叠边缘(在0.0000010.000001范围内)的层不计算为穿过的层数。 输入数据 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

输出数据 1

4
2
2
0
0
2

来源 滑铁卢地区赛 1999年10月2日