CF1713B
题意
给定一个长度为
分析
我们不妨考虑数组
由于数组的末状态为每个元素均为
为了满足上述条件,不难想到原数组应满足的条件:由一段非严格单调递增序列和一段非严格单调递减序列构成,或由两者之一构成;这时
满足这样的排列有很多种,我们只需判断
代码
#include<iostream>
#define sfor(i, h, t) for(int i = (h); i <= (t); ++i)
using namespace std;
const int MAXN = 0x186A8;
int T = 1, N;
int num[MAXN];
signed main(void) {
ios::sync_with_stdio(false);
cin >> T;
while(T--) {
cin >> N;
bool f = 0, g = 0;
sfor(i, 1, N) {
cin >> num[i];
if(g)
continue;
if(!f)
if(num[i] < num[i - 1])
f = 1;
if(f)
if(num[i] > num[i - 1])
g = 1;
}
cout << (g ? "NO\n" : "YES\n");
}
return 0;
}