U297803 2023“郡园杯”春季编程挑战活动D
题目描述
有 $n$ 位同学按顺序从前至后站成一列,每位同学手上有一个**不同的数字**。
接下来,会有若干位同学按某种顺序依次出列,每次出列的同学需要满足下列条件之一:
1. 出列之前,手上的数比其前面相邻同学手上的数更大;
2. 出列之前,手上的数比其后面相邻同学手上的数更小。
需要注意的是,每出列一位同学,**队伍中的相邻关系也会随之改变**。
请问,是否存在一种出列顺序,使得最后只剩一名同学。
输入格式
第一行输入一个正整数 $t$ 表示询问次数。
对于每一次询问,第一行输入一个正整数 $n$ 表示总人数,第二行输入 $n$ 个正整数依次表示每位同学手里的数字。
输出格式
输出 $t$ 行,每行一个字符串 `YES` 或 `NO`,表示存在或不存在。
说明/提示
【样例解释】
对于样例 $1$,除了第三组情况外,均能找到一种出列顺序,使得最后只剩一名同学。
第一组情况:`[1,2,3] -> [1,2] -> [1]`。
第二组情况:`[3,1,2,4] -> [3,1,4] -> [3,4] -> [4]`。
第四组情况:`[2,4,6,1,3,5] -> [4,6,1,3,5] -> [4,1,3,5] -> [4,1,5] -> [4,5] -> [4]`。
【测试点约束】
对于所有测试点:$1\leq t\leq 2\times 10^4$,$2\leq n\leq 3\times 10^5$,$\sum n\leq 3\times 10^5$,$1\leq a_i\leq n$。
每个测试点的具体限制见下表:
| 测试点编号 | $n\leq$ |
| :----------: | :----------: |
| $1\sim 2$ | $3$ |
| $3\sim 6$ | $8$ |
| $7\sim 10$ | $3\times 10^5$ |