CF166C Median
题目描述
对于长度为 $n$ 的数组,数组的中位数是指将数组元素按非递减顺序排序后,位于第 $\left\lceil\frac{n+1}{2}\right\rceil$ 个位置的元素(数组下标从 $1$ 开始)。例如,数组 $(2,6,1,2,3)$ 的中位数是 $2$,数组 $(0,96,17,23)$ 的中位数是 $17$。
我们将表达式 $\left\lfloor\frac{a}{b}\right\rfloor$ 定义为 $a$ 除以 $b$ 的整数部分。
有一天,Vasya 向 Petya 展示了一个包含 $n$ 个整数的数组,并提议找到这个数组的中位数。Petya 甚至没看数组,就说中位数等于 $x$。Petya 是个非常诚实的孩子,他决定向给定数组中添加若干个数,使添加后的数组的中位数恰好等于 $x$。
Petya 可以往数组中添加任意整数,范围从 $1$ 到 $10^{5}$,包括重复添加相同的数字。也可以一个数都不添加。如果某个数被添加多次,则该数应被视为出现了多次。不允许删除或更改数组中的原有元素。
当 Petya 正在分散 Vasya 注意力时,你的任务就是求出他至少需要添加多少个数,才能使最终数组的中位数等于 $x$。
输入格式
第一行包含两个用空格分隔的整数 $n$ 和 $x$($1 \leq n \leq 500$,$1 \leq x \leq 10^{5}$),分别表示原数组长度和要求的中位数值。
第二行包含 $n$ 个用空格分隔的整数,表示原始数组。这些元素的取值范围为 $1$ 到 $10^{5}$,元素不一定各不相同。
输出格式
输出一个整数,表示 Petya 需要添加的最少元素个数,使数组中位数等于 $x$。
说明/提示
在第一个样例中,可以将数字 $9$ 加入数组 $(10,20,30)$。得到新数组 $(9,10,20,30)$,其中中位数位于位置 $2$,为 $10$。
在第二个样例中,你应该添加数字 $4$、$5$、$5$、$5$。添加后得到的数组中位数为 $4$。
由 ChatGPT 5 翻译