手机上有很多游戏都是基于以下想法的变体。屏幕上布满了各种凸几何物体,每个物体内部都有一个数字。屏幕底部有一把枪,当扣动扳机时,它会以连发方式发射 $n$ 个球,每个球在前一个球发射 1 秒后离开枪口。枪可以旋转,以便你设定球的发射方向。球离开枪口后,会在几何物体和墙壁之间反弹,直到它们回到屏幕底部,此时它们会消失。球之间不会相互作用——如果两个球相交,它们会直接穿过对方,互不影响。
每当球撞击到一个几何物体时,物体内部的数字就会减 1。当物体的计数达到零时,它会立即消失,而刚刚撞击它的球(或多个球)将继续前进,不再从该物体上反弹。考虑图 D.1 中的示例:如果枪(用字母 G 表示)朝向左侧 45 度角,那么所有的球都将沿着从 G 开始的之字形路径运动。注意,矩形物体可以被同一个球撞击两次——一次从左侧,一次从右侧。一旦该物体被左侧和右侧的撞击总共击中 10 次,它就会消失,屏幕上所有球的路径也会相应改变。
图 D.1:样例输入 1。
在实际游戏中,目标是尽快消除所有物体。在这里,我们只关心从固定枪角发射的一系列球。更具体地说,给定一组物体的位置、物体内部的数字、发射球的数量以及枪的朝向,确定每个物体最终的数值。
输入格式
输入以七个值 $w, h, n, m, l, r, s$ 开始(除 $l$ 外均为整数)。前四个值表示屏幕的宽度和高度($1 \le w, h \le 1\,000$)、枪发射的球的数量($1 \le n \le 500$)以及屏幕上物体的数量($1 \le m \le 20$)。最后三个值描述了枪在屏幕底边的位置($0 \le l \le w$)及其朝向,如图 D.2 所示($-10 \le r \le 10, 1 \le s \le 10$)。
图 D.2:枪的位置和朝向。
接下来是描述 $m$ 个凸物体的 $m$ 行数据。每行以一个整数 $p$ 开头,表示物体的边数($3 \le p \le 10$),随后是 $p$ 个按顺时针顺序给出的边端点 $x-y$ 坐标。之后是一个整数 $q$,表示物体内部的数值($1 \le q \le 1\,000$)。所有长度单位均为厘米,球离开枪口的速度为每秒 1 厘米。没有任何两个物体(包括屏幕边界)会相互交叉,甚至不会在一点上相交。当物体的数值达到 0 或更小时,物体会立即被移除。任何在物体被移除前 $10^{-7}$ 秒内撞击到物体的球,都会像物体已经被移除一样穿过它。最后,没有任何球会撞击到距离边端点 $10^{-7}$ 范围内的位置,并且所有球最终都会离开游戏屏幕。
输出格式
输出 $m$ 个值,表示每个物体最终的数值,顺序与输入中的顺序一致。如果任何数值为负,则输出 0。
样例
样例输入 1
20 30 5 3 10 -1 1 4 10 18 10 24 14 24 14 18 10 3 5 23 1 25 5 27 7 4 16 22 16 28 19 28 19 19 8
样例输出 1
0 2 3
样例输入 2
20 30 10 3 10.1 -1 1 4 10 18 10 24 14 24 14 18 10 3 5 23 1 25 5 27 7 4 16 22 16 28 19 28 19 19 8
样例输出 2
0 0 1