#P16886. [GKS 2022 #E] Students and Mentors

[GKS 2022 #E] Students and Mentors

题目描述

一组 NN 名学生一起为即将到来的编程竞赛(如 Google 的 Kick Start 和 Code Jam)做准备。为了互相帮助备考,决定让每名学生从其他学生中挑选一位导师。导师将帮助学员解决问题、学习算法、跟踪进度,并在整个备考过程中给予支持。

每名学生将恰好有一名导师(来自其他所有学生),且一个人可以成为多人的导师。对于每名学生 ii,我们知道其评分 RiR_i,该评分大致反映了该学生在编程竞赛中的水平。由于认为导师不应比学员强太多,学生 jj 可以成为学生 ii 的导师,仅当 Rj2×RiR_j \le 2 \times R_i。注意,导师的评分甚至可以低于或等于学员的评分。

不出所料,每名学生都希望拥有尽可能强的导师。对于每名学生,你能帮忙找出他们能选到的最高可能的导师评分吗?

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。每个测试用例由 22 行组成。

每个测试用例的第一行包含一个整数 NN,表示一组学生的数量。

每个测试用例的第二行包含 NN 个整数 R1,R2,R3,,RNR_1, R_2, R_3, \dots, R_N,其中 RiR_i 是第 ii 名学生的评分。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: M1 M2 M3 ... MN,其中 xx 是测试用例编号(从 11 开始),MiM_i 是第 ii 名学生能选到的最高可能的导师评分,如果没有合适的导师,则为 1-1

3
3
2000 1500 1900
5
1000 600 1000 2300 1800
2
2500 1200
Case #1: 1900 2000 2000
Case #2: 1800 1000 1800 1800 2300
Case #3: 1200 -1

提示

在样例 #1 中,有 33 名学生,评分分别为 200020001500150019001900。所有学生都可以选择其他任何学生作为导师,因此他们都选择尽可能高评分的导师。结果,他们分别选择了评分为 190019002000200020002000 的导师。注意,在这种情况下,评分为 20002000 的学生将成为其他 22 名学生的导师。

在样例 #2 中,有 55 名学生,评分分别为 10001000600600100010002300230018001800(注意,有些学生可能有相同的评分)。对于两名评分为 10001000 的学生,他们能选到的最高评分导师为 18001800。他们不能选择评分为 23002300 的导师,因为 2300>2×10002300 > 2 \times 1000。评分为 600600 的学生不能选择评分为 1800180023002300 的导师,因此他选择评分为 10001000 的导师(两名评分为 10001000 的学生均可)。评分为 23002300 的学生可以选择其他任何学生作为导师,因此他选择评分为 18001800 的导师——这是可能中的最高评分。最后,评分为 18001800 的学生也可以选择其他任何学生作为导师,因此他选择可能中的最高评分 23002300。因此,最终学生们分别选择了评分为 1800180010001000180018001800180023002300 的导师。

在样例 #3 中,有 22 名学生,评分分别为 2500250012001200。对于评分为 25002500 的学生,另一名评分为 12001200 的学生可以成为导师,且没有其他选项。对于评分为 12001200 的学生,我们不能分配评分为 25002500 的导师,因为 2500>2×12002500 > 2 \times 1200,因此该学生没有合适的导师。最终,我们输出 120012001-1 作为该测试用例的结果。

限制条件

1T1001 \le T \le 100

对于所有 ii1Ri1061 \le R_i \le 10^6

测试集 1

2N10002 \le N \le 1000

测试集 2

2N1052 \le N \le 10^5

翻译由 DeepSeek V4 Pro 完成