1500A Going Home https://codeforces.com/contest/1495/problem/B
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <utility>
#include <map>
#include <vector>
#include <queue>
using namespace std;
typedef long long LL;
const int N=1e5+10;
int a[N],up[N],dn[N];
void solve()
{
int n;
cin>>n;
a[0]=a[n+1]=up[0]=dn[n+1]=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]>a[i-1])up[i]=up[i-1]+1;
else up[i]=1;
}
for(int i=n;i>=1;i--)
{
if(a[i]>a[i+1])dn[i]=dn[i+1]+1;
else dn[i]=1;
}
int pos,maxn=-1;
int cnt=0;//不连续的最长峰的个数
for(int i=1;i<=n;i++)maxn=max(maxn,max(up[i],dn[i]));
for(int i=1;i<=n;i++)
{
if(up[i]==dn[i]&&up[i]==maxn)cnt++,pos=i;
else if (up[i]==maxn||dn[i]==maxn)cnt++,pos=i;
}
if(cnt>1){puts("0");return ;}
if(up[pos]==dn[pos]&&up[pos]%2==1)puts("1");
else puts("0");
}
int main()
{
cin.tie(0);ios::sync_with_stdio(false);
int tests=1;
//scanf("%d",&tests);
// cin>>tests;
//while(~scanf("%d",&n))
while(tests--)
{
solve();
}
return 0;
}
原文:https://www.cnblogs.com/liv-vil/p/14533592.html