小红的中位数
题号:NC314601
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个长度为 n 的数组 a = \{a_1, a_2, \dots, a_n\}。小红可以进行若干次操作,每次选择数组中的任意一个元素将其删除(不允许将数组删至空数组)。请你计算最少需要删除多少个元素,才能使得数组的中位数发生改变。如果无论如何删除都无法改变中位数,输出 -1

【名词解释】
\hspace{15pt}中位数:一个长为 n 的数组的中位数是将数组按非降序排列后的第 \lfloor \tfrac{(n+1)}{2}\rfloor 个元素。

输入描述:

\hspace{15pt}第一行输入一个整数 n\left(1 \leqq n \leqq 2\times 10^5 \right)
\hspace{15pt}第二行输入 n 个整数 a_i \left(1 \leqq a_i \leqq 10^9 \right),代表数组 a

输出描述:

\hspace{15pt}如果无论如何删除都无法改变中位数,请输出 -1;否则输出一个整数,代表所需要的最小删除次数。
示例1

输入

复制
1
1

输出

复制
-1
示例2

输入

复制
3
1 2 3

输出

复制
1