max-mid
题号:NC304241
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定 n 个物品,每个物品都有价值 v_iv_i 只有 0,1 两种取值情况,你需要从里面选择恰好 k 个物品。
记所选物品价值的最大值为 Max,所选物品价值的中位数为 Mid,请问 Max-Mid 的最小值是多少?
\rule{4cm}{0.01pt}
^{\text{∗}} 【中位数】一个长度 n 的序列 \{a_1,a_2,...,a_n\} 的中位数为其从小到大排序后的第 \lfloor\frac{n+1}{2}\rfloor 个元素。

输入描述:

本题有多组测试数据

第一行输入一个整数 T(1\leq T \leq 100),表示数据组数。

对于每组测试数据:

第一行输入两个整数 n,k(1\leq n \leq 1000,1\leq k\leq n)

第二行输入 n 个整数 v_i(0\leq v_i \leq 1),表示物品价值。

输出描述:

对于每组测试数据,输出 Max-Mid 的最小值。
示例1

输入

复制
3
4 1
0 1 0 1
5 4
0 0 0 1 1
4 3
0 1 0 1

输出

复制
0
1
0

说明

对于第一组测试数据,可以选择 0Max - Mid = 0 - 0 = 0
对于第二组测试数据,可以选择 0,0,0,1Max - Mid = 1 - 0 = 1
对于第三组测试数据,可以选择 0,1,1Max - Mid = 1 - 1 = 0