题目描述
2 次元平面に N 個の駒が置かれています。駒には 1 から N までの番号が付いており、駒 i が置かれている座標は (Xi,Yi) です。複数の駒が同じ座標に置かれている可能性もあります。
M 個の操作 op1, …, opM を順に行います。操作は 4 種類あり、入力形式と操作の内容は以下の通りです。
1:全ての駒を、原点を中心に時計回りに 90 度回転させた位置に移動する
2:全ての駒を、原点を中心に反時計回りに 90 度回転させた位置に移動する
3 p:全ての駒を、直線 x=p について対称な位置に移動する
4 p:全ての駒を、直線 y=p について対称な位置に移動する
クエリが Q 個与えられます。 i 番目のクエリでは 2 つの整数 Ai,Bi が与えられるので、Ai 個目の操作を行った直後に駒 Bi がある座標を出力してください。ここで、1 個目の操作の直前を「0 個目の操作の直後」とみなします。
输入格式
入力は以下の形式で標準入力から与えられる。
N X1 Y1 ⋮ XN YN M op1 ⋮ opM Q A1 B1 ⋮ AQ BQ
输出格式
各クエリに対する答えを、1 行に 1 つずつ、x 座標、y 座標の順に空白区切りで出力せよ。
题目大意
题目描述
给出 N 个点,以及每个点得坐标 (xi,yi),给出 M 次操作,操作如下:
-
第一种操作:将所有点绕原点 (0,0) 顺时针旋转 90 度。
-
第二种操作:将所有点绕原点 (0,0) 逆时针旋转 90 度。
-
第三种操作:以 x=p 为对称轴,将所有的点对称过去。
-
第四种操作:以 y=p 为对称轴,将所有的点对称过去。
接着给出 Q 组询问,每次询问在某次操作过后某个点的坐标。
输入格式
第一行输入 N,表示 N 个点。
接下来 N 行,每行输入 xi,yi,表示第 i 个点的坐标。
第 N+2 行输入 M,表示操作次数。
接下来 M 行,每行首先输入 opti,表示执行第 opti 种操作。如果 opti=3 或者 opti=4,再输入一个数字 p,表示一条直线。
第 N+M+3 行输入 Q,表示询问个数。
接下来 Q 行,每行两个数字 Ai,Bi,表示询问在第 Ai 次操作过后第 Bi 个点的坐标。特别的,Ai=0 表示询问初始的坐标。
输出格式
输出 Q 行,每行输出对于一次询问的答案。
1
1 2
4
1
3 3
2
4 2
5
0 1
1 1
2 1
3 1
4 1
1 2
2 -1
4 -1
1 4
1 0
2
1000000000 0
0 1000000000
4
3 -1000000000
4 -1000000000
3 1000000000
4 1000000000
2
4 1
4 2
5000000000 4000000000
4000000000 5000000000
提示
制約
- 入力は全て整数
- 1 ≤ N ≤ 2× 105
- 1 ≤ M ≤ 2× 105
- 1 ≤ Q ≤ 2× 105
- −109 ≤ Xi,Yi ≤ 109
- opi は 4 つの操作の種類のいずれかの入力形式に従う
3 p 及び 4 p の操作において −109 ≤ p ≤ 109
- 0 ≤ Ai ≤ M
- 1 ≤ Bi ≤ N
Sample Explanation 1
最初、唯一の駒である駒 1 は (1,2) に置かれています。各操作により駒 1 の位置は (1,2)→(2,−1)→(4,−1)→(1,4)→(1,0) と変化します。