#icpc2012autumnd. [icpc2012autumn_d]Billiard

[icpc2012autumn_d]Billiard

题目描述

你有一个台球桌,其打球区域是矩形的。这个台球桌特殊之处在于没有球袋,并且打球区域完全被垫圈所包围。

你成功地制造了一个超精密的台球机器人。当你把一些球放在桌子上时,机器人会击打其中一个球。被击打的球在移动了总共10000个单位的距离后停下来。

当球与桌子的垫圈碰撞时,球会像镜子反射一样运行。当球与角落碰撞时,球会沿着原来的路径反弹。

你的任务是预测机器人击打的球会先与哪个球发生碰撞。


输入

输入是一个数据集序列。数据集的数量少于100个。每个数据集的格式如下。

nn ww hh rr vxv_x vyv_y x1x_1 y1y_1 ... xnx_n yny_n

数据集的第一行包含一个正整数 nn,表示桌子上的球的数量(2n112 \leq n \leq 11)。下一行包含由一个空格分隔的五个整数 wwhhrrvxv_xvyv_y,其中 wwhh 分别表示打球区域的宽度和长度 (4w,h10004 \leq w, h \leq 1000),rr 表示球的半径(1r1001 \leq r \leq 100)。机器人以向量 (vx,vyv_x, v_y) 的方向击打球 (10000vx,vy10000-10000 \leq v_x, v_y \leq 10000(vx,vy)(0,0)(v_x, v_y) \neq (0, 0))。

接下来的 nn 行给出球的位置。每行包含两个整数,由一个空格分隔,(xi,yi)(x_i, y_i) 表示初始状态下第 ii 个球的中心位置 (r<xi<wrr < x_i < w - rr<yi<hrr < y_i < h - r)。(0,0)(0, 0) 表示打球区域的左上角位置,(w,h)(w, h) 表示打球区域的右下角位置。在初始状态下,可以假设球之间和球与垫圈之间没有接触。

机器人总是会先击打列表中的第一个球。可以假设给定的值没有错误。

输入的结尾由一行单独的零表示。

输出

对于每个数据集,输出机器人击打的球首先与哪个球发生碰撞的索引。当被击打的球在停止移动之前未与任何球碰撞时,输出-1

可以假设不会有多于一个球同时与被击打的球发生碰撞。

还保证当 rr 改变 epseps (eps<109eps < 10^{-9}) 时,首先发生碰撞的球和碰撞方式不会改变。


示例输入

3
26 16 1 8 4
10 6
9 2
9 10
3
71 363 4 8 0
52 238
25 33
59 288
0

示例输出

3
-1

来源

JAG Practice Contest for ACM-ICPC Asia Regional 2012