QOJ.ac

QOJ

Límite de tiempo: 2.0 s Límite de memoria: 256 MB Puntuación total: 100 Hackeable ✓

#9172. 交替环

Estadísticas

给定平面上的 $n$ 个点,其中任意三点不共线。你可以选择这些点的一个非空子集,并为该子集选择一种排列顺序。如果选定的有序子集为 $p_0, p_1, \dots, p_{k-1}$,我们要求对于 $1 \le i \le k+1$,角 $\angle p_{i-1}p_i p_{i+1}$ 在 $i$ 递增的过程中顺时针和逆时针交替出现。在角中点的标记上,应取下标模 $k$ 的值。注意 $k$ 必须为偶数,否则由于奇偶性原因这是不可能的。这样的有序点集被称为一个交替环(alternating cycle)。

你需要找到包含点数最少的交替环,并将其输出;如果不存在这样的环,则报告无解。

输入格式

第一行包含一个整数 $n$ ($1 \le n \le 200\,000$),表示输入点的数量。 接下来的 $n$ 行,每行包含两个整数 $x$ 和 $y$ ($0 \le x, y \le 10^9$),表示点的坐标。 保证所有点互不相同,且保证任意三点不共线。

输出格式

如果不存在交替环,输出 $-1$。否则,输出 $k$,即环中点的数量。在接下来的行中按顺序输出环上的点。 在接下来的 $k$ 行中,每行输出两个整数 $x$ 和 $y$ ($0 \le x, y \le 10^9$),表示交替环中点的坐标。 这些点应为输入点的一个子集,并且它们应按输入顺序构成一个交替环。 如果存在多个达到最小 $k$ 的解,输出其中任意一个即可。

样例

样例输入 1

6
10 15
20 15
15 23
0 31
15 0
30 30

样例输出 1

6
0 31
10 15
15 0
20 15
30 30
15 23

样例输入 2

4
0 0
0 1
1 0
1 1

样例输出 2

-1

说明

样例 1 的示意图,展示了一个长度为 6 的交替环,用直线段连接。

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.