#CYTUS3. 误检星图
误检星图
两台扫描仪分别得到了 n 个二维点,记为点集 A 和 B。同一个点集中没有重复坐标,输入顺序没有含义。
为了校准两台扫描仪,你可以对 A 依次进行以下变换:
- 绕原点逆时针旋转 r 个 90°,其中 r 为 0、1、2、3 之一;
- 将所有点平移同一个整数向量 (d_x,d_y)。
如果变换后至少有 n−1 个 A 中的点与 B 中的点重合,就称三元组 (r,d_x,d_y) 是一种有效校准。
请输出全部有效校准。题目不保证一定存在有效校准。
逆时针旋转一次 90° 会将 (x,y) 变为 (−y,x)。不同的三元组视为不同校准,即使它们对某个特殊点集产生相同的结果。
输入格式
本题只有一组输入数据。
第一行包含一个整数 n。
接下来 n 行,每行两个整数,描述 A 中一个点的坐标。
再接下来 n 行,每行两个整数,描述 B 中一个点的坐标。
输出格式
第一行输出有效校准的数量 z。
接下来 z 行,每行输出 r、d_x、d_y。所有三元组必须互不相同,并按 r、d_x、d_y 依次比较的字典序升序输出。
如果不存在有效校准,只输出一行 0。
数据范围
- 2 ≤ n ≤ 200000;
- 输入点的每个坐标都在 [−10^9,10^9] 内;
- A 内部、B 内部各自没有重复点。
样例
4
0 0
1 0
0 2
10 10
5 -3
5 -2
3 -3
20 20
1
1 5 -3
说明:A 的前三个点旋转后分别为 (0,0)、(0,1)、(−2,0),再平移 (5,−3),就得到 B 的前三个点。第四个点没有匹配。
相关
在下列比赛中: