#P1598. Ray Tracing

Ray Tracing

题目描述

在一个 n×mn\times m 的矩形房间里有 kk 个传感器,第 ii 个传感器位于 (xi,yi)(x_i,y_i),所有的传感器位置互不相同。房间的一对对角位于 (0,0)(0,0)(n,m)(n,m),房间的墙壁与坐标轴平行。

在时刻 00,有一束光线从 (0,0)(0,0) 出发,向(1,1)(1,1)的方向释放,这束光线以 2 m/s\sqrt{2}\ \tt m/s 的速度传播,因此,光线将在出发后恰好 1 s1\ \tt s 时到达点 (1,1)(1,1)。当光线碰到墙壁时,它将遵循反射角等于入射角的规则进行反射,当它碰到 44 个角中的任意一个时,就会立刻停止。

对于每一个传感器,你需要计算光线第一次到达这个传感器所在点的时刻,如果光纤永远不会经过这个传感器,那么输出 1-1

输入格式

输入的第一行包括 33 个整数 n,m,kn,m,k2n,m1052\leq n,m\leq 10^51k1051\leq k\leq 10^5)—— 房间墙壁的长度和传感器的数量。

接下来的 kk 行,每一行包括两个整数 xix_iyiy_i1xin11\leq x_i\leq n-11yim11\leq y_i\leq m-1)—— 传感器的坐标,保证没有任何两个传感器有坐标相同。

输出格式

输出共 kk 行,第 ii 行应该输出光线第一次经过第 ii 个传感器所在点的时刻;或是当光线永远不会穿过这个传感器所在的点时,输出 1-1

3 3 4
1 1
1 2
2 1
2 2
1
-1
-1
2

光线将依次通过点 (0,0) (1,1) (2,2) (3,3)(0,0)\ (1,1)\ (2,2)\ (3,3)。他将在 3s3 \tt s 后在 (3,3)(3,3) 停下。

3 4 6
1 1
2 1
1 2
2 2
1 3
2 3
1
-1
-1
2
5
-1

光纤将会依次穿过如下的点:$(0,0)\ (1,1)\ (2,2)\ (3,3)\ (2,4)\ (1,3)\ (0,2)\ (1,1)\ (2,0)\ (3,1)\ (2,2)\ (1,3)\ (0,4)$。光线将在 12 s12\ \tt s 后在 (0,4)(0,4) 停下,分别在点 (3,3) (2,4) (0,2) (2,0) (3,1)(3,3)\ (2,4)\ (0,2)\ (2,0)\ (3,1) 处进行一次反射。

7 4 5
1 3
2 2
5 1
5 3
4 3
13
2
9
5
-1