题目描述
数组 b1,b2,…bm 的中位数记作 med(b1,b2,…,bm),定义为数组 b 中第 ⌈2m⌉ 小的元素。
给定一个整数数组 a1,a2,…,an 和一个整数 k。你需要判断是否存在一对下标 1≤l<r<n 满足:
$$\operatorname{med}(\operatorname{med}(a_1, a_2 \dots a_l), \operatorname{med}(a_{l + 1}, a_{l + 2} \dots a_r), \operatorname{med}(a_{r + 1}, a_{r + 2} \dots a_n)) \leq k.
$$
换句话说,判断是否可以将数组分割为三个连续的子数组,使得这三个子数组中位数的中位数小于或等于 k。
输入格式
每个测试包含多个测试用例。第一行输入测试用例数量 t(1≤t≤104)。接下来是各测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 k(3≤n≤2⋅105,1≤k≤109)——数组 a 的长度和常数 k。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109)——数组 a 的元素。
保证所有测试用例的 n 之和不超过 2⋅105。
输出格式
对于每个测试用例,如果存在满足条件的分割,输出 "YES",否则输出 "NO"。
输入输出样例
6
3 2
3 2 1
3 1
3 2 1
6 3
8 5 3 1 6 4
8 7
10 7 12 16 3 15 6 11
6 8
7 11 12 4 9 17
3 500000000
1000 1000000000 1000
YES
NO
NO
YES
YES
YES
说明/提示
在第一个和第二个测试用例中,唯一可能的分割方式是将数组分为 [3]、[2]、[1]。它们的中位数分别是 3、2 和 1。这三个中位数的中位数是 med(3,2,1)=2。因此,第一个测试用例的答案是 "YES"(因为 2≤2),而第二个测试用例的答案是 "NO"(因为 2>1)。
在第三个测试用例中,可以证明不存在满足条件的分割。
在第四个测试用例中,一个满足条件的分割是 [10,7]、[12,16,3,15]、[6,11]。子数组的中位数分别是 7、12 和 6。这三个中位数的中位数是 med(7,12,6)=7≤k,因此该分割满足条件。
在第五个测试用例中,一个满足条件的分割是 [7,11]、[12,4]、[9,17]。子数组的中位数分别是 7、4 和 9。这三个中位数的中位数是 med(7,4,9)=7≤k,因此该分割满足条件。
在第六个测试用例中,唯一可能的分割方式是将数组分为 [1000]、[109]、[1000]。子数组的中位数分别是 1000、109 和 1000。这三个中位数的中位数是 med(1000,109,1000)=1000≤k,因此该分割满足条件。