题目描述
给定 n 个二元组 (ai,bi)。
定义函数:
f(i,j,k)=aibj+ajbk+akbi.
你需要将这 n 个二元组重新排序。设排序后第 x 个位置上的二元组原编号为 cx,则要求对任意三个连续位置 x,x+1,x+2,都有:
f(cx,cx+1,cx+2)≥f(cx+2,cx+1,cx).
请构造任意一个满足条件的排列。
输入格式
第一行包含一个整数 n。
接下来 n 行,每行包含两个整数 ai,bi,表示第 i 个二元组。
输出格式
如果存在满足条件的排序方案,输出一行一个 1∼n 的排列,表示排序后每个位置上的原二元组编号。
如果不存在满足条件的排序方案,输出一行 -1。
样例 1
输入
3
10 70
30 40
50 60
输出
2 3 1
解释
排序后得到:
(30,40),(50,60),(10,70).
此时:
f(1,2,3)=5700,
f(3,2,1)=4700.
因此满足条件。
样例 2
输入
4
99 99
11 11
88 88
55 55
输出
2 4 3 1
数据范围
保证:
3≤n≤1000,
1≤ai,bi≤109.
子任务
| 子任务编号 |
分值 |
限制 |
| 1 |
2 |
n≤10 |
| 2 |
8 |
n≤18 |
| 3 |
22 |
m=n∈Z,且 ai=⌊mi−1+1⌋,bi=(i−1)modm+1 |
| 4 |
68 |
无特殊限制 |