程序设计入门
题号:NC288377
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}Askalana打完CF之后回家大笑着大力砸下了本题。
\hspace{15pt}对于给定的由 n 个整数构成的数组 \{a_1, a_2, \dots, a_n\},考虑一个定义在有限离散空间 \Omega = \{1,2,\dots,n\} 上的实值映射 f: \Omega \to \Bbb{R},其中 f(i) = a_i。定义以下两种变换操作:
\hspace{23pt}\bullet\,变换算子 \mathcal{T}_1:对于任意 (i,j) \in \Omega \times \Omegai \neq j,存在 x \in (-\infty, \min\{f(i), f(j)\}),使得 f'(i) = f'(j) = x,其中 f' 为变换后的映射;
\hspace{23pt}\bullet\,变换算子 \mathcal{T}_2:对于任意 (i,j) \in \Omega \times \Omegai \neq j,定义双射 \sigma_{i,j}: \Omega \to \Omega,使得:\sigma_{i,j}(x) = \begin{cases} <br />j & x = i \\<br />i & x = j \\<br />x & \text{otherwise}<br />\end{cases},则 f'(x) = f(\sigma_{i,j}(x)), \forall x \in \Omega
\hspace{15pt}请判定是否存在一个长度不超过 k 的变换算子序列 \{\mathcal{O}_t\}_{t=1}^m (m \leq k, \mathcal{O}_t \in \{\mathcal{T}_1, \mathcal{T}_2\}),使得最终得到的映射 f^* 满足:
\exists i \Big( i \in [1, n) \cap \Omega \implies \Big(f^*({i+1}) \geq \sup \big\{f^*(1), f^*(2), \cdots, f^*(i)\big\}\Big) \Big)

\forall i \Big( i \in [1, n) \cap \Omega \implies \Big(f^*({i+1}) \geq \sup \big\{f^*(1), f^*(2), \cdots, f^*(i)\big\}\Big) \Big)
\hspace{15pt}其中,\sup \{A\} 表示集合 \{A\} 的最小上界,即集合中的最大值。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 100\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行输入两个正整数 n, k \left(1\leq n \leq 10^5;\ \lceil \tfrac n 2 \rceil \leq k \leq 10^5\right) 代表数组中的元素数量、操作上限次数。
\hspace{15pt}第二行 n 个正整数 a_1, a_2, \dots, a_n \left(1\leq a_i \leq 10^9\right) 代表数组中的元素。

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行。如果条件满足,输出 \rm YES;否则,直接输出 \rm NO。您可以以任何大小写形式输出答案,例如,\rm yEs\rm yes 和 \rm YeS 都将被视为肯定的回答。
示例1

输入

复制
1
4 2
4 3 2 1

输出

复制
Yes