CF1300B.Assigning to Classes

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Assigning to Classes

题目描述

提醒:数组 [a1,a2,,a2k+1][a_1, a_2, \dots, a_{2k+1}] 的中位数定义如下:设 [b1,b2,,b2k+1][b_1, b_2, \dots, b_{2k+1}] 为该数组按升序排列后的结果,则该数组的中位数为 bk+1b_{k+1}

2n2n 名学生,第 ii 名学生的能力值为 aia_i。不保证所有能力值互不相同。

我们将一个班级的能力值定义为该班所有学生能力值的中位数。

作为校长,你希望将每位学生分配到两个班级中的某一个,使得每个班级的人数都是奇数(即不能被 22 整除)。每个班级的人数可以相等,也可以不同,由你决定。每个学生必须且只能被分配到一个班级。在所有满足条件的分班方案中,你希望选择一个使得两个班级能力值的绝对差最小的方案。

你能得到的最小绝对差是多少?

输入格式

每个测试点包含多组测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn1n1051 \le n \le 10^5),表示学生人数的一半。

第二行包含 2n2n 个整数 a1,a2,,a2na_1, a_2, \dots, a_{2n}1ai1091 \le a_i \le 10^9),表示每位学生的能力值。

保证所有测试用例中 nn 的总和不超过 10510^5

输出格式

对于每个测试用例,输出一个整数,表示两个班级能力值的最小可能绝对差。

说明/提示

在第一个测试用例中,只有一种分班方式——每个班级各一人。能力值的绝对差为 11=0|1 - 1| = 0

在第二个测试用例中,一种可能的分班方式是第一个班级为 [6,4,2][6, 4, 2],其能力值为 44,第二个班级为 [5,1,3][5, 1, 3],其能力值为 33。绝对差为 43=1|4 - 3| = 1

注意你不能分为 [2,3][2, 3][6,5,4,1][6, 5, 4, 1],也不能分为 [][][6,5,4,1,2,3][6, 5, 4, 1, 2, 3],因为班级人数为偶数。

[2][2][1,3,4][1, 3, 4] 也不行,因为能力值为 5566 的学生没有被分配到班级。

在第三个测试用例中,你可以这样分班:[3,4,13,13,20][3, 4, 13, 13, 20][2,5,8,16,17][2, 5, 8, 16, 17],或者 [3,8,17][3, 8, 17][2,4,5,13,13,16,20][2, 4, 5, 13, 13, 16, 20]。这两种分法都能得到最小的绝对差。

由 ChatGPT 4.1 翻译

样例

3
1
1 1
3
6 5 4 1 2 3
5
13 4 20 13 2 5 8 3 17 16
0
1
5

在线编程 IDE

建议全屏模式获得最佳体验