#P15993. [2024国家队集训中科院站]排序

    ID: 15204 传统题 2000ms 1024MiB 尝试: 3 已通过: 1 难度: 9 上传者: 标签>算法基础构造计算几何贪心CF2600

[2024国家队集训中科院站]排序

题目描述

给定 nn 个二元组 (ai,bi)(a_i,b_i)

定义函数:

f(i,j,k)=aibj+ajbk+akbi.f(i,j,k)=a_i b_j+a_j b_k+a_k b_i.

你需要将这 nn 个二元组重新排序。设排序后第 xx 个位置上的二元组原编号为 cxc_x,则要求对任意三个连续位置 x,x+1,x+2x,x+1,x+2,都有:

f(cx,cx+1,cx+2)f(cx+2,cx+1,cx).f(c_x,c_{x+1},c_{x+2})\ge f(c_{x+2},c_{x+1},c_x).

请构造任意一个满足条件的排列。

输入格式

第一行包含一个整数 nn

接下来 nn 行,每行包含两个整数 ai,bia_i,b_i,表示第 ii 个二元组。

输出格式

如果存在满足条件的排序方案,输出一行一个 1n1\sim n 的排列,表示排序后每个位置上的原二元组编号。

如果不存在满足条件的排序方案,输出一行 -1

样例 1

输入

3
10 70
30 40
50 60

输出

2 3 1

解释

排序后得到:

(30,40),(50,60),(10,70).(30,40),(50,60),(10,70).

此时:

f(1,2,3)=5700,f(1,2,3)=5700, f(3,2,1)=4700.f(3,2,1)=4700.

因此满足条件。

样例 2

输入

4
99 99
11 11
88 88
55 55

输出

2 4 3 1

数据范围

保证:

3n1000,3\le n\le 1000, 1ai,bi109.1\le a_i,b_i\le 10^9.

子任务

子任务编号 分值 限制
1 2 n10n\le 10
2 8 n18n\le 18
3 22 m=nZm=\sqrt n\in\mathbb Z,且 ai=i1m+1a_i=\left\lfloor\dfrac{i-1}{m}+1\right\rfloorbi=(i1)modm+1b_i=(i-1)\bmod m+1
4 68 无特殊限制