#icpc2013autumne. [icpc2013autumn_e]Putter
[icpc2013autumn_e]Putter
问题描述
Fox Ciel正在练习迷你高尔夫,这是一种只用推杆球杆进行的高尔夫游戏。为了提高高尔夫球技,她认为球撞击墙壁的效果很重要。
迷你高尔夫场地位于二维平面上,被堵墙组成一个凸多边形。一开始,球放在场地内的位置。球足够小,可以视为一个点。
Ciel 可以将球朝任意方向射出,并在任何时候停下球。球会沿着直线运动。当球撞到墙壁时,会像镜面反射一样反弹(即入射角等于反射角)。
为了练习,Ciel 决定满足以下条件下进行一次射击:
- 球精确地撞击场地的每堵墙一次。
- 球不撞击场地的角落。
计算球撞击墙的可能顺序的数量。
输入
输入包含多个数据集。数据集的数量不超过100个。每个数据集的格式如下。
:
:
第一行包含一个整数()。接下来的一行包含两个整数和(),描述球的初始位置的坐标。接下来的行中,每行包含两个整数和(),描述场地的每个角落的坐标。角落以逆时针顺序给出。你可以假设给定的初始位置在场地内,并且场地是凸多边形。
保证存在一个射击方向,对于每个有效的墙壁顺序,满足以下条件:球与场地的角落之间的距离始终大于,直到球撞到最后一堵墙。
最后一个数据集后面跟随一行只包含一个零。
输出
对于输入中的每个数据集,在一行中打印墙壁有效顺序的数量。
样例输入
4
0 0
-10 -10
10 -10
10 10
-10 10
0```
### 样例输出
```plain
8```
---
### 资源名称
[JAG Practice Contest for ACM-ICPC Asia Regional 2013](http://acm-icpc.aitea.net/index.php?2013%2FPractice%2F%CC%CF%B5%BC%C3%CF%B6%E8%CD%BD%C1%AA)