#include<bits/stdc++.h>
using namespace std;
struct node{
int ans;
int end;
}ans[1000001];
int a[1000001];
int main()
{
int n,maxx=-1;
cin>>n;
a[0]=INT_MAX;
a[n+1]=INT_MIN;
for(int i=1;i<=n;i++)
{
cin>>a[i];
ans[i].end=i;
if(a[i]>a[i-1]) ans[i].ans=ans[i-1].ans+1;
else ans[i].ans=1;
maxx=max(ans[i].ans,maxx);
}
for(int i=n;i>=1;i--)
{
if(ans[i+1].ans>ans[i].ans&&a[i+1]>a[i]) ans[i]=ans[i+1];
}
for(int i=1;i<=n;i++)
{
if(a[i]<a[i+2]-1&&ans[i].end!=ans[i+2].end)
maxx=max(ans[i].ans+ans[i+2].ans
+int(ans[i+1].end!=ans[i+2].end&&ans[i].end!=ans[i+1].end),maxx);
if(i!=1)
if(a[i]<a[i-1]&&ans[i].end!=ans[i-1].end) maxx=max(maxx,ans[i].ans+1);
if(i!=n)
if(a[i]>a[i+1]&&ans[i].end!=ans[i+1].end) maxx=max(maxx,max(ans[i+1].ans,ans[i].ans)+1);
}
int sum=1;
for(int i=2;i<=n;i++)
{
maxx=max(sum,maxx);
if(a[i]>a[i-1]) sum++;
else sum=1;
}
maxx=max(sum,maxx);
cout<<maxx;
return 0;
}
测试后是这样,可我看了 n 遍都没发现错误,各位大佬错哪了?