QOJ.ac

QOJ

時間限制: 2 s 記憶體限制: 512 MB 總分: 100

#2599. 抗压

统计

如今,很多人都承受着压力。科学家和心理学家试图解释这种现象并寻找抗压方法。另一方面,商人则试图从中获利。他们发明并销售了大量不同的抗压和放松玩具。你有时也会像其他人一样感到压力,所以你决定购买其中一种玩具。

你买的玩具看起来像是一个无限大的竹制桌面,上面放置了 $2n$ 个图钉:其中 $n$ 个是蓝色的,其余是黄色的。套装中还有一个红色的图钉和 $n$ 根橡皮筋。你可以将红色图钉钉在任何你想要的位置,然后将橡皮筋套在图钉上。十分之九的心理学家保证,如果你能以这样一种方式放置所有 $n$ 根橡皮筋:每根橡皮筋都套住一个蓝色图钉、一个黄色图钉以及中间的那个红色图钉,你就不再会有压力了。换句话说,每根橡皮筋的两端应分别连接到一个蓝色图钉和一个黄色图钉上,然后被红色图钉撑开。此外,禁止将两根不同的橡皮筋连接到同一个图钉(蓝色或黄色)上。

然而,你买的这套玩具是有缺陷的。所有的橡皮筋都很旧,如果拉伸过度可能会断裂。假设你将一根橡皮筋的两端分别连接到位于点 $A$ 和点 $B$ 的蓝色和黄色图钉上。设 $C$ 为你钉入红色图钉的位置。那么,当且仅当 $\angle ACB$ 为锐角(小于 90 度)时,橡皮筋会断裂。注意,你可以将红色图钉放在任何你想要的位置,甚至可以放在蓝色或黄色图钉所在的位置。如果 $A$ 或 $B$ 与 $C$ 重合,则 $\angle ACB$ 被视为 180 度。

你今天压力很大(不是吗?)。这就是为什么你决定寻求这个玩具的帮助。你能否将红色图钉钉在桌面的某个位置,然后放置所有 $n$ 根橡皮筋,使得没有任何橡皮筋断裂?

输入格式

第一行包含一个整数 $q$,表示测试用例的数量 ($1 \le q \le 2 \cdot 10^5$)。

每个测试用例的描述如下:第一行包含一个整数 $n$,表示每种颜色图钉的数量 ($1 \le n \le 2 \cdot 10^5$)。接下来的 $2n$ 行,每行包含两个整数 $x_i$ 和 $y_i$,表示桌面上图钉的坐标 ($-10^6 \le x_i, y_i \le 10^6$)。前 $n$ 行对应蓝色图钉,后 $n$ 行对应黄色图钉。

保证在每个测试用例中,没有两个图钉位于同一点。同时保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

每个测试用例的输出应包含一行或两行。

如果无法放置红色图钉并拉伸橡皮筋使得没有任何橡皮筋断裂,则在一行中输出 “impossible”(不含引号)。

否则,为该测试用例输出两行: 第一行应包含两个实数 $X$ 和 $Y$:所选红色图钉的坐标($|X|$ 和 $|Y|$ 不应超过 $10^9$)。 第二行应包含 $n$ 个整数 $m_i$。让我们按照输入顺序将蓝色和黄色图钉从 $1$ 到 $n$ 编号。那么 $m_i$ 表示你决定将第 $i$ 个蓝色图钉与第 $m_i$ 个黄色图钉之间的橡皮筋拉伸。换句话说,对于每个蓝色图钉,你必须输出与之匹配的黄色图钉的编号。注意,$m_i$ 应构成 $1$ 到 $n$ 的一个排列。

如果有多种可能的解,输出其中任意一个即可。角度的检查方式如下:

设 $A$、$B$ 和 $C$ 分别为蓝色图钉、与之配对的黄色图钉和红色图钉所在的点。设 $r = |AC|^2 + |CB|^2$ 且 $d = |AB|^2$,其中 $|AC|$、$|CB|$ 和 $|AB|$ 是对应图钉之间的距离。如果 $r \le d$,且绝对误差或相对误差小于 $10^{-6}$,则检查器将接受你的解。

样例

输入 1

3
3
-2 -2
1 2
-1 3
-2 3
-1 -1
2 -1
2
1 2
-1 0
2 -1
0 0
2
3 2
-2 -1
-3 -1
1 -3

输出 1

0.0 1.0
1 3 2
0.0 0.0
2 1
-0.5 -1.0
1 2

说明

考虑第一个测试用例。 我们可以选择将红色图钉放置在点 $(0, 1)$,并按以下方式配对: 1. 第一个蓝色图钉和第一个黄色图钉。 2. 第二个蓝色图钉和第三个黄色图钉。 3. 第三个蓝色图钉和第二个黄色图钉。

所有三个角都不是锐角,因此配对有效。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.