袋鼠将军的部下选择
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}在迎战坎格鲁斯普雷之前,袋鼠将军需要从 n 名可选部下中选出 m 名组成精锐小队。袋鼠将军的战斗力为 k,第 i 名部下的战斗力为 a_i,定义该部下的差异度为 |a_i - k|,即部下战斗力与将军战斗力之差的绝对值。

\hspace{15pt}请你选出恰好 m 名部下,使得被选中部下的最大差异度最小化。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行输入三个整数 n,m,k\left(1\leqq m\leqq n\leqq 10^5;\ -10^9\leqq k\leqq 10^9\right),表示部下人数、选出人数、将军战斗力。
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,\dots,a_n\left(-10^9\leqq a_i\leqq 10^9\right),表示部下的战斗力。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 10^5

输出描述:

\hspace{15pt}对于每组测试数据,新起一行输出一个整数,表示选择 m 名部下后最大差异度的最小值。
示例1

输入

复制
3
3 1 5
4 3 6
4 2 7
8 6 3 10
5 5 2
3 4 5 6 7

输出

复制
1
1
5

说明

\hspace{15pt}对于第一组测试数据,部下差异度分别为 \{1,2,1\},选任一个差异度为 1 的部下即可,答案为 1
\hspace{15pt}对于第二组测试数据,部下差异度分别为 \{1,1,4,3\},选第一、二名部下,最大差异度为 1