#CF2102B. 挑剔的猫
挑剔的猫
题目描述
时间限制: 秒
内存限制: 兆字节
给定一个整数数组 。你可以进行以下操作任意多次(包括零次):
- 选择一个下标 (),将 乘以 (即更新 )。
你的任务是判断是否可以通过进行任意次上述操作,使得位于下标 的元素成为数组的中位数。注意,操作也可以应用于下标 ,这意味着中位数可以是 的原始值或其相反数。
数组 的中位数定义为数组 中第 小的元素。例如,数组 的中位数是 ,而数组 的中位数是 。
保证数组中元素的绝对值互不相同。即,不存在一对下标 使得 。
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 (),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 ()—— 数组 的长度。
每个测试用例的第二行包含 个整数 (,)—— 数组 的元素。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,如果可以通过操作使得下标 的元素成为数组的中位数,则输出 "YES",否则输出 "NO"。
你可以以任意大小写输出答案(例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定回答)。
示例
输入
7
3
2 3 1
5
1 2 3 4 5
4
4 2 0 -5
4
-5 0 4 3
4
-10 8 3 2
1
1
10
9 1000 -999 -13 456 -223 23 24 10 0
输出
YES
YES
YES
NO
NO
YES
YES
说明
-
第一个测试用例: 已经是数组 的中位数,因此不需要进行操作。
-
第二个测试用例:我们可以进行两次操作:一次在下标 ,一次在下标 。数组变为 ,其中位数为 。
-
第三个测试用例:如果对下标 进行操作,数组将变为 ,其中位数为 。
-
第四个测试用例:可以证明,无论进行多少次操作,都无法使数组的中位数变为 或 。
-
第五个测试用例:可以证明,无法使中位数变为 或其相反数 。
-
第六个测试用例: 时,唯一的元素就是中位数,因此答案是
"YES"。 -
第七个测试用例:存在一种操作方案使得 成为中位数。