#include <bits/stdc++.h>
using namespace std;
//https://blog.csdn.net/donname/article/details/114660119
const int maxn=2e5+5;
int v[maxn],l[maxn],r[maxn],maxlen,cnt,top;
int main()
{
int n;
cin>>n;
l[0]=r[n+1]=v[0]=v[n+1]=0;
for(int i=1; i<=n; i++)
{
cin>>v[i];
if(v[i]>v[i-1])
{
l[i]=l[i-1]+1;
}
else
l[i]=1;
}
for(int i=n; i>0; i--)
{
if(v[i]>v[i+1])
r[i]=r[i+1]+1;
else
r[i]=1;
}
for(int i=1;i<=n;i++)
{ //选出峰顶 这个时候不要判断左右两边的长度!!
if(maxlen<l[i]||maxlen<r[i])
{
maxlen=max(l[i],r[i]);
top=i;
cnt=1;
}
else if(maxlen==l[i]||maxlen==r[i])
{//峰顶不唯一
cnt++;
}
}
///只有 x选在峰顶 左右两边都是等长的奇数长度的下坡时 才能赢
///如果是奇数长度且最长的 但只有一侧满足还是赢不了
if(l[top]==r[top] && maxlen&1 &&cnt==1)
{
cout<<1<<endl;
}
else cout<<0<<endl;
return 0;
}
1495B - Let‘s Go Hiking 博弈
最新推荐文章于 2024-05-21 23:16:53 发布