看所给序列是否(严格)满足先递增,后递减 。是输出“Yes”,不是输出“No”。
#include<iostream>
#include<cstring>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cmath>
#include<stack>
using namespace std;
const int maxn = 1e5+7;
long long mapp[maxn];
int n, flag;
int main()
{
scanf("%d", &n);
while(n--)
{
int m;
scanf("%d", &m);
for(int i=1; i<=m; i++)
{
scanf("%d", &mapp[i]);
}
int l = 1, r = m;
//从左边开始循环,直到不再满足递增条件,记录此时的最大值;
while(l<m&&mapp[l]<mapp[l+1])
l++;
//从右边开始循环,直到不再满足递增条件,记录此时的最大值;
while(r>1&&mapp[r-1]>mapp[r])
r--;
//如果两个最大值相等,并且在1-m范围内,即为符合要求的序列,输出Yes,否则输出No;
if(l==r&&l>1&&l<m)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}