AT_pakencamp_2025_day3_c Don't be Clockwise

题目描述

在二维平面上有 $N$ 个点 $p_1,p_2,\dots,p_N$。 点 $p_i$ 的坐标为 $(X_i,Y_i)$。不会有多个点重叠在同一坐标上。 请对点列 $p=(p_1,p_2,\dots,p_N)$ 进行重排,得到一个新的点列 $q=(q_1,q_2,\dots,q_N)$,使其满足以下条件。或者,若不存在这样的重排,请声明不可能。 - 对于所有 $1\leq i\leq N-2$,点列 $q_i,q_{i+1},q_{i+2}$ 要么共线,要么按照此顺序呈现逆时针方向。 - 更准确地说,设 $q_i$ 的坐标为 $(x_i,y_i)$,则必须满足 $(x_{i+1} - x_i)(y_{i+2} - y_{i+1}) - (y_{i+1} - y_i)(x_{i+2} - x_{i+1}) \ge 0$。 请对 $T$ 组测试数据分别解决上述问题。

输入格式

输入由标准输入给出,格式如下: > $T$ > $\text{case}_1$ > $\text{case}_2$ > $\vdots$ > $\text{case}_T$ 每组测试数据格式如下: > $N$ $X_1$ $Y_1$ $X_2$ $Y_2$ $\dots$ $X_N$ $Y_N$

输出格式

输出 $T$ 行。 第 $i$ 行表示第 $i$ 个测试用例的答案。如果不存在满足条件的 $q$,输出 $-1$。 如果存在,设 $q=(p_{r_1},p_{r_2},\dots,p_{r_N})$,则输出 $r_1,r_2,\dots,r_N$,用空格隔开。 如果有多个答案,输出任意一个即可。

说明/提示

### 样例解释 1 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_pakencamp_2025_day3_c/5789510dd0a972f26643ab162102f09991862582273447701a2a3485f4d905ee.png) ### 数据范围 - $1\leq T\leq 100$ - $3\leq N\leq 3000$ - $0\leq X_i,Y_i\leq 10^9$ - $(X_i,Y_i)\ne (X_j,Y_j)$ ($i\ne j$) - 所有 $N$ 的总和不超过 $3000$ - 所有输入均为整数 由 ChatGPT 5 翻译