CF1349B Orac and Medians

题目描述

Slime 有一个正整数序列 $a_1, a_2, \ldots, a_n$。 在一次操作中,Orac 可以选择该序列的任意一个子区间 $[l \ldots r]$,并将区间内所有的值 $a_l, a_{l+1}, \ldots, a_r$ 替换为 $\{a_l, a_{l+1}, \ldots, a_r\}$ 的中位数。 在本题中,对于整数多重集 $s$,$s$ 的中位数定义为其中第 $\lfloor \frac{|s|+1}{2}\rfloor$ 小的数。例如,$\{1,4,4,6,5\}$ 的中位数是 $4$,$\{1,7,5,8\}$ 的中位数是 $5$。 Slime 希望 Orac 通过若干次操作使得 $a_1 = a_2 = \ldots = a_n = k$。 Orac 认为这可能做不到,不想浪费时间,因此他决定请你帮忙判断是否有可能满足 Slime 的要求。他可能会多次向你提问。

输入格式

输入的第一行为一个整数 $t$,表示询问次数。 每个询问的第一行包含两个整数 $n\ (1\le n\le 100\,000)$ 和 $k\ (1\le k\le 10^9)$,第二行包含 $n$ 个正整数 $a_1,a_2,\dots,a_n\ (1\le a_i\le 10^9)$。 所有询问中 $n$ 的总和不超过 $100\,000$。

输出格式

输出共 $t$ 行,第 $i$ 行输出 'yes' 如果可以通过若干次操作使所有元素都变为 $k$,否则输出 'no'。你可以使用小写或大写字母。

说明/提示

在第一个询问中,Orac 无法将所有元素变为 $3$。 在第二个询问中,$a_1=6$ 已经满足要求。 在第三个询问中,Orac 可以选择整个数组,将所有元素变为 $2$。 在第四个询问中,Orac 无法将所有元素变为 $3$。 在第五个询问中,Orac 可以先选择 $[1,6]$,再选择 $[2,10]$。 由 ChatGPT 4.1 翻译