#345. 中位数划分

中位数划分

题目描述

数组 b1,b2,…bmb_1, b_2, \ldots b_m 的中位数记作 med⁡(b1,b2,…,bm)\operatorname{med}(b_1, b_2, \ldots, b_m),定义为数组 bb 中第 ⌈m2⌉\left\lceil \frac{m}{2} \right\rceil 小的元素。

给定一个整数数组 a1,a2,…,ana_1, a_2, \ldots, a_n 和一个整数 kk。你需要判断是否存在一对下标 1≤l<r<n1 \le 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.$$

换句话说,判断是否可以将数组分割为三个连续的子数组,使得这三个子数组中位数的中位数小于或等于 kk。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 tt(1≤t≤1041 \le t \le 10^4)。接下来是各测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 kk(3≤n≤2⋅1053 \le n \le 2 \cdot 10^5,1≤k≤1091 \le k \le 10^9)——数组 aa 的长度和常数 kk。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \le a_i \le 10^9)——数组 aa 的元素。

保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,如果存在满足条件的分割,输出 "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][3]、[2][2]、[1][1]。它们的中位数分别是 33、22 和 11。这三个中位数的中位数是 med⁡(3,2,1)=2\operatorname{med}(3, 2, 1) = 2。因此,第一个测试用例的答案是 "YES"(因为 2≤22 \le 2),而第二个测试用例的答案是 "NO"(因为 2>12 > 1)。

在第三个测试用例中,可以证明不存在满足条件的分割。

在第四个测试用例中,一个满足条件的分割是 [10,7][10, 7]、[12,16,3,15][12, 16, 3, 15]、[6,11][6, 11]。子数组的中位数分别是 77、1212 和 66。这三个中位数的中位数是 med⁡(7,12,6)=7≤k\operatorname{med}(7, 12, 6) = 7 \le k,因此该分割满足条件。

在第五个测试用例中,一个满足条件的分割是 [7,11][7, 11]、[12,4][12, 4]、[9,17][9, 17]。子数组的中位数分别是 77、44 和 99。这三个中位数的中位数是 med⁡(7,4,9)=7≤k\operatorname{med}(7, 4, 9) = 7 \le k,因此该分割满足条件。

在第六个测试用例中,唯一可能的分割方式是将数组分为 [1000][1000]、[109][10^9]、[1000][1000]。子数组的中位数分别是 10001000、10910^9 和 10001000。这三个中位数的中位数是 med⁡(1000,109,1000)=1000≤k\operatorname{med}(1000, 10^9, 1000) = 1000 \le k,因此该分割满足条件。