luogu#P9430. [NAPC-#1] Stage2 - Darkness

[NAPC-#1] Stage2 - Darkness

题目背景

题目描述

nn 支军队分布在各地,可以看作在一个平面直角坐标系内。他们都受 kid 的统一指挥,kid 共发出 mm 条命令。

命令有如下几种:

  • 1 p q 表示把每支军队的位置从 (xi,yi)(x_i,y_i) 移到 (xi+p,yi+q)(x_i+p,y_i+q)
  • 2 i,表示ii 支军队的位置对直线 y=xy=x 作轴对称变换(即交换 xix_iyiy_i 的值)。
  • 3 i,表示查询第 ii 支军队现在所处的位置(即输出此时的 xix_iyiy_i)。

请注意 12 命令的操作对象不同,前者为全体军队,后者为单支军队。

本来 kid 可以直接拿望远镜看的,但是天太黑了,只能拜托你编写一个程序告诉他了。

输入格式

第一行两个正整数 n,mn,m

接下来 nn 行,第 ii 行两个整数 ai,bia_i,b_i 表示第 ii 支军队的初始位置 (xi,yi)=(ai,bi)(x_i,y_i)=(a_i,b_i)

接下来 mm 行,每行两到三个整数,表示 kid 发出的一条命令。具体地,对于每条命令,先有一个正整数 opop 表示命令类型;

  • 如果 op=1op=1,那么后面有两个整数 p,qp,q,表示把每支军队的位置从 (xi,yi)(x_i,y_i) 移到 (xi+p,yi+q)(x_i+p,y_i+q)
  • 如果 op=2op=2,那么后面有一个正整数 ii,表示ii 支军队的位置对 y=xy=x 做轴对称变换。
  • 如果 op=3op=3,那么后面有一个正整数 ii,表示查询第 ii 支军队现在所处的位置。

输出格式

对于每次 kid 发出的一条 3 命令,输出一行两个整数 xi,yix_i,y_i 表示第 ii 支军队现在所处的位置。

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

提示

【数据范围】

该题共有 1010 个测试点,每个测试点等分。

  • 对于 20%20\% 的数据,n,m1000n,m\leqslant 1000
  • 对于另外 30%30\% 的数据,保证没有 2 命令。

对于 100%100\% 的数据,1n1051\leqslant n\leqslant 10^51m5×1051\leqslant m\leqslant 5\times10^5ai,bi,p,q103|a_i|,|b_i|,|p|,|q|\leqslant 10^31in1\leqslant i\leqslant nop{1,2,3}op\in\{1,2,3\}

【样例解释】

时间 (x1,y1)(x_1,y_1) (x2,y2)(x_2,y_2) (x3,y3)(x_3,y_3)
初始时 (1,2)(1,2) (2,5)(2,5) (6,2)(6,2)
22 次命令后 (2,6)(2,6) (3,9)(3,9) (7,6)(7,6)
44 次命令后 (6,7)(6,7)
66 次命令后 (7,5)(-7,5) (6,8)(-6,8) (3,6)(-3,6)