CF1674D A-B-C Sort

题目描述

给定三个数组 $a$、$b$ 和 $c$。初始时,数组 $a$ 有 $n$ 个元素,数组 $b$ 和 $c$ 为空。 你需要执行如下包含两个步骤的算法: - 第 $1$ 步:当 $a$ 非空时,每次取出 $a$ 的最后一个元素,插入到数组 $b$ 的中间位置。如果 $b$ 当前长度为奇数,你可以选择将该元素放在 $b$ 的中间元素左侧或右侧。最终,$a$ 变为空,$b$ 变为 $n$ 个元素。 - 第 $2$ 步:当 $b$ 非空时,每次取出 $b$ 的中间元素,放到数组 $c$ 的末尾。如果 $b$ 当前长度为偶数,你可以选择取出两个中间元素中的任意一个。最终,$b$ 变为空,$c$ 变为 $n$ 个元素。 具体例子请参考提示部分。你能否让数组 $c$ 最终为非递减排序?

输入格式

第一行包含一个整数 $t$($1 \le t \le 2 \cdot 10^4$),表示测试用例数量。接下来有 $t$ 组数据。 每组数据的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示数组 $a$ 的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^6$),表示数组 $a$ 的元素。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,如果你能让数组 $c$ 最终为非递减排序,输出 YES(不区分大小写);否则输出 NO(不区分大小写)。

说明/提示

在第一个测试用例中,对于 $a = [3, 1, 5, 3]$,可以如下操作: 第 $1$ 步: $a$ $[3, 1, 5, 3]$ $\Rightarrow$ $[3, 1, 5]$ $\Rightarrow$ $[3, 1]$ $\Rightarrow$ $[3]$ $\Rightarrow$ $[]$ $b$ $[]$ $\Rightarrow$ $[\underline{3}]$ $\Rightarrow$ $[3, \underline{5}]$ $\Rightarrow$ $[3, \underline{1}, 5]$ $\Rightarrow$ $[3, \underline{3}, 1, 5]$ 第 $2$ 步: $b$ $[3, 3, \underline{1}, 5]$ $\Rightarrow$ $[3, \underline{3}, 5]$ $\Rightarrow$ $[\underline{3}, 5]$ $\Rightarrow$ $[\underline{5}]$ $\Rightarrow$ $[]$ $c$ $[]$ $\Rightarrow$ $[1]$ $\Rightarrow$ $[1, 3]$ $\Rightarrow$ $[1, 3, 3]$ $\Rightarrow$ $[1, 3, 3, 5]$ 最终,数组 $c = [1, 3, 3, 5]$,它是有序的。 由 ChatGPT 4.1 翻译