根据题面我们很容易看出,对于任何一个碟子,只要它的半径不为,它的上面就不能放碟子(因为放了就移不下来了)
这样的话,我们考虑以半径为的碟子为界,将所有碟子分为两半。显而易见,它左边的碟子直径必然是递增的,而右边则必然是递减的。以此为条件判断即可。
上代码:
#include<iostream>
using namespace std;
int a[200005];
int main(){
int n,maxm=0,wz;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]>=maxm)
maxm=a[i],wz=i;//标记直径最长的碟子位置
}
int bj=true;
for(int i=1;i<wz;i++)
if(a[i]<a[i-1])bj=false;//判断左边碟子直径
for(int i=wz+1;i<n;i++)
if(a[i]>a[i-1])bj=false;//右边同理
if(bj)cout<<"YES\n";
else cout<<"NO\n";
return 0;
}
吐槽:没有蓝题难度吧...最多橙题~黄题吧