CF2103C Median Splits

题目描述

数组 $b_1, b_2, \ldots b_m$ 的中位数记作 $\operatorname{med}(b_1, b_2, \ldots, b_m)$,定义为数组 $b$ 中第 $\left\lceil \frac{m}{2} \right\rceil$ 小的元素。 给定一个整数数组 $a_1, a_2, \ldots, a_n$ 和一个整数 $k$。你需要判断是否存在一对下标 $1 \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. $$ 换句话说,判断是否可以将数组分割为三个连续的子数组,使得这三个子数组中位数的中位数小于或等于 $k$。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 $t$($1 \le t \le 10^4$)。接下来是各测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $k$($3 \le n \le 2 \cdot 10^5$,$1 \le k \le 10^9$)——数组 $a$ 的长度和常数 $k$。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$)——数组 $a$ 的元素。 保证所有测试用例的 $n$ 之和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,如果存在满足条件的分割,输出 "YES",否则输出 "NO"。 答案可以以任意大小写形式输出(例如 "yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定回答)。

说明/提示

在第一个和第二个测试用例中,唯一可能的分割方式是将数组分为 $[3]$、$[2]$、$[1]$。它们的中位数分别是 $3$、$2$ 和 $1$。这三个中位数的中位数是 $\operatorname{med}(3, 2, 1) = 2$。因此,第一个测试用例的答案是 "YES"(因为 $2 \le 2$),而第二个测试用例的答案是 "NO"(因为 $2 > 1$)。 在第三个测试用例中,可以证明不存在满足条件的分割。 在第四个测试用例中,一个满足条件的分割是 $[10, 7]$、$[12, 16, 3, 15]$、$[6, 11]$。子数组的中位数分别是 $7$、$12$ 和 $6$。这三个中位数的中位数是 $\operatorname{med}(7, 12, 6) = 7 \le k$,因此该分割满足条件。 在第五个测试用例中,一个满足条件的分割是 $[7, 11]$、$[12, 4]$、$[9, 17]$。子数组的中位数分别是 $7$、$4$ 和 $9$。这三个中位数的中位数是 $\operatorname{med}(7, 4, 9) = 7 \le k$,因此该分割满足条件。 在第六个测试用例中,唯一可能的分割方式是将数组分为 $[1000]$、$[10^9]$、$[1000]$。子数组的中位数分别是 $1000$、$10^9$ 和 $1000$。这三个中位数的中位数是 $\operatorname{med}(1000, 10^9, 1000) = 1000 \le k$,因此该分割满足条件。 翻译由 DeepSeek V3 完成