QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 64 MB مجموع النقاط: 140

#13748. 平行四边形

الإحصائيات

最近,出现了一款名为“平行四边形”(Parallelograms)的新流行电脑游戏。在游戏开始时,电脑在屏幕上绘制了 $N$ 个点,其坐标为 $-10$ 到 $10$ 之间的整数(闭区间)。

游戏中唯一允许的操作是:选择 $3$ 个不共线的点 $A, B, C$,然后用一个新点 $D$ 代替点 $C$,使得 $ACBD$ 是一个以线段 $AB$ 为对角线的平行四边形。注意,这样的点 $D$ 总是存在且唯一的。

在开始时,所有点都是互不相同的,但在游戏过程中,允许两个或多个点具有相同的坐标。此外,所有新创建的点的坐标绝对值必须最多为 $10^9$。

游戏的目标是通过一系列操作,将所有点移动到第一象限。更准确地说,在游戏结束时,所有点都必须具有非负坐标。

寻找一个由最多 $2\,500$ 步操作组成的序列,将所有点移动到第一象限,或者确定不存在这样的操作序列。

输入格式

输入的第一行包含任务中的数量 $N$($3 \le N \le 400$)。

接下来的 $N$ 行中,第 $i$ 行包含第 $i$ 个点的坐标 $X_i, Y_i$($-10 \le X_i, Y_i \le 10$)。

在开始时,没有两个点具有相同的坐标。

输出格式

如果无解,输出的第一行也是唯一的一行必须包含 $-1$。

否则,输出的第一行必须包含操作步数 $M$($0 \le M \le 2\,500$)。

接下来的 $M$ 行,每行必须包含 $3$ 个不同的数字 $A, B, C$($1 \le A, B, C \le N$),表示参与该步操作的点的索引。索引为 $C$ 的点将根据所述规则发生改变,而索引为 $A$ 和 $B$ 的点保持不变。

样例

输入样例 1

3
0 0
4 0
3 -1

输出样例 1

1
1 2 3

输入样例 2

4
5 0
0 5
-2 -2
-3 2

输出样例 2

2
1 2 3
1 2 4

输入样例 3

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

输出样例 3

-1

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.