AT_apio_jumps Jumps
题目描述
跳跃技术对忍者至关重要。一组忍者要在一个池塘上进行跳跃训练。池塘里有 $N$ 块石头,编号 $1$ 到 $N$。石头的位置可以视为二维平面上的点,第 $i$ 块石头的坐标为 $(X_i, Y_i)$。
他们希望找到一条路线:以某块石头为起点,依次访问所有 $N$ 块石头且经过每块石头恰好一次,最后回到起点。两块石头之间的路线是连接两点的线段。出于安全考虑,这条闭合路线必须不自交:从空中俯视,路线不能在平面上重复经过同一位置(即线段之间不发生交叉,除了相邻线段在端点的石头相接)。
输入格式
第一行一个整数 $N$。
第二行到第 $N + 1$ 行,每行两个非负整数 $(X_i,Y_i)$,表示第 $i$ 块石头的坐标。
输出格式
若存在满足条件的路线,输出 $N$ 行,第 $j$ 行输出路线中的第 $j$ 块石头编号(视为按该顺序访问,最后会回到第 $1$ 行的起点)。若有多解可输出任意一种。
若不存在满足条件的路线,仅需输出一行一个字符 `0`。
说明/提示
对于 $100\%$ 的数据,保证 $3 \le N \le 10^5$,$0 \le X_i,Y_i \le 10^9$。