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$。