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$ |