1410:控枪
文件提交:无需freopen
内存限制:128 MB
时间限制:1.000 S
评测方式:普通裁判
命题人:
提交:2
解决:2
题目描述
在枪战类游戏里每一把枪在开枪时都会有后坐力,这一后坐力会使玩家的枪不由自主地随机移动,我们称之为轨迹偏移。
这类游戏里为了模拟真实情况,一把枪有一个弹匣,弹匣中装有 $n$ 发子弹;每射出 $n$ 发子弹,玩家会换上下一个弹匣。
在游戏中,为了程序实现方便,同一把枪的后坐力导致的轨迹偏移往往是固定的,并且这一轨迹偏移序列的周期为弹匣的容量。因此,我们可以记住这把枪的轨迹偏移,然后用一个相反的鼠标移动抵消这一偏移,这样就实现了「控枪」。
于是,要达到枪枪必中,只需要令每一次移动鼠标追踪目标时的位移向量等于敌人的位移向量加上上一枪的轨迹偏移向量的相反向量。
这类游戏里为了模拟真实情况,一把枪有一个弹匣,弹匣中装有 $n$ 发子弹;每射出 $n$ 发子弹,玩家会换上下一个弹匣。
在游戏中,为了程序实现方便,同一把枪的后坐力导致的轨迹偏移往往是固定的,并且这一轨迹偏移序列的周期为弹匣的容量。因此,我们可以记住这把枪的轨迹偏移,然后用一个相反的鼠标移动抵消这一偏移,这样就实现了「控枪」。
于是,要达到枪枪必中,只需要令每一次移动鼠标追踪目标时的位移向量等于敌人的位移向量加上上一枪的轨迹偏移向量的相反向量。
输入
首先是一行两个正整数 $n,m$ ,分别表示枪的轨迹偏移周期和需要开的枪数。
之后是 $n−1$ 行,每行两个整数 $a_{i}, b_{i}$,分别表示第 $i$ 发子弹射出后的轨迹偏移。由于第 $n$ 次射击后要换弹匣,所以不考虑第 $n$ 次射击产生的轨迹偏移,因此显然每个弹匣的第 $1$ 枪没有轨迹偏移。
之后是 $n−1$ 行,每行两个整数 $a_{i}, b_{i}$,分别表示第 $i$ 发子弹射出后的轨迹偏移。由于第 $n$ 次射击后要换弹匣,所以不考虑第 $n$ 次射击产生的轨迹偏移,因此显然每个弹匣的第 $1$ 枪没有轨迹偏移。
之后是 $m$ 行,每行两个整数 $x_{i},y_{i}$,分别表示每一次开枪时敌人所在的位置。
$2\le n\le 10^{6} ; 2\le m \le 10^{6} ; -10^{8} \le a_{i},b_{i},x_{i},y_{i}\le 10^{8}$
输出
输出 $m$ 行,每行两个整数 $ansx_{i},ansy_{i}$,表示开第 $i$ 枪所需的鼠标位移向量。我们认为开第一枪之前鼠标位于 (0,0)。
样例输入-1 复制
4 6
2 2
7 8
9 9
-1 -5
1 1
-2 -2
-4 -4
3 3
2 2
样例输出-1 复制
-1 -5
0 4
-10 -11
-11 -11
7 7
-3 -3