每次测试时间限制:2 秒
内存限制:256 兆字节
题目描述
考虑一个数组 a1,…,an。初始时,每个 ai=0。
你可以执行以下形式的操作:
- 选择一个整数 x,满足 x>min(a)。
- 定义 i 为满足 ai<x 的最小下标。换句话说,i 是 1 到 n 之间唯一的整数,使得 ai<x 并且对任意 1≤j≤i−1 有 aj≥x。
- 最后,将 ai 增加 x。
例如,如果 a=[6,8,2,1] 且你选择 x=6,那么 i 将等于 3(因为 a1≥6,a2≥6,a3<6),操作后 a 变为 [6,8,8,1]。
你可以进行任意多次操作。问:能否达到目标数组 b1,…,bn?
输入
每个测试点包含多个测试用例。第一行包含一个整数 t(1≤t≤10000)——测试用例的数量。
每个测试用例的第一行包含一个整数 n(2≤n≤200000)。
第二行包含 n 个整数 b1,b2,…,bn(1≤bi≤109)。
所有测试用例的 n 之和不超过 200000。
输出
对于每个测试用例,如果可以达到目标数组,输出 "YES",否则输出 "NO"。
你可以以任意大小写输出答案(例如,"yEs"、"yes"、"Yes"、"YES" 均视为肯定响应)。
示例
输入
4
4
5 6 1 1
3
3 1 2
3
40 60 90
2
1 1
输出
YES
NO
NO
YES
注释
在第一个测试用例中,我们可以执行以下操作序列:
- 选择 x=2,a 变为 [2,0,0,0]
- 选择 x=2,a 变为 [2,2,0,0]
- 选择 x=3,a 变为 [5,2,0,0]
- 选择 x=4,a 变为 [5,6,0,0]
- 选择 x=1,a 变为 [5,6,1,0]
- 选择 x=1,a 变为 [5,6,1,1]
在第二个测试用例中,可以证明无法达到 [3,1,2]。