AC代码:
#include <stdio.h>
#include <string.h>
#define Max 100100
#define ll long long
#define max(a,b) a>b?a:b;
ll a[Max],l[Max],r[Max];
int main(){
ll n,p,i,j,ans;
while(~scanf("%lld",&n)){
memset(a,0,sizeof(a));
memset(l,0,sizeof(l));
memset(r,0,sizeof(r));
ans=1;
for(i=0;i<n;i++)
scanf("%lld",&a[i]);
if(n==1)
printf("1\n");
else if(n==2)
printf("2\n");
else{
l[0]=1;
for(i=1;i<n;i++){
if(a[i]>a[i-1])
l[i]=l[i-1]+1;
else
l[i]=1;
}
r[n-1]=1;
for(i=n-2;i>=1;i--){
if(a[i+1]>a[i])
r[i]=r[i+1]+1;
else
r[i]=1;
}
for(i=n-2;i>=1;i--){
if(a[i-1]+1<a[i+1])
ans=max(ans,l[i-1]+1+r[i+1]);
}
for(i=1;i<n;i++){
if(a[i]<=a[i-1])
ans=max(ans,l[i-1]+1);
}
for(i=0;i<n-1;i++){
if(a[i]>=a[i+1])
ans=max(ans,r[i+1]+1);
}
printf("%lld\n",ans);
}
}
return 0;
}