题解 | #牛牛的数列#
牛牛的数列
https://ac.nowcoder.com/acm/problem/13134
using namespace std;
int n;
const int MAXN=1e5+10;
int l[MAXN];
int r[MAXN];
int a[MAXN];
bool tr=false;
int ans=0;
int main()
{
scanf("%d",&n);
int ans=1;
for(int i=1;i<=n;i++) cin>>a[i];
l[1]=0;
int p=0;
for(int i=2;i<=n;i++)
{
if(a[i]>a[i-1])
{
l[i]=++p;
}
else
{
l[i]=++p;
p=0;
}
ans=max(ans,l[i]);
}
r[n]=0;
p=0;
for(int i=n-1;i>=1;i--)
{
if(a[i]<a[i+1]) r[i]=++p;
else
{
r[i]=++p;
p=0;
}
ans=max(ans,r[i]);
}
for(int i=1;i<=n;i++)
{
if(a[i+1]>a[i-1])
ans=max(ans,l[i]+r[i]+1);
else ans=max(ans,max(l[i]+1,r[i]+1));
}
// for(int i=1;i<=n;i++)
// cout<<i<<" "<<l[i]<<" "<<r[i]<<endl;
// cout<<endl;
cout<<ans;
}