连续的子序列,emmm,难度瞬间下降...
只要预处理出来两个数组,第一个是到i的时候,前面递增的最大数量,第二个是从后面往前递减的最大数量,然后假如a[i+1]-a[i-1]>2即可统计答案..
代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N],l[N],r[N];//左边有多少连续比它小的 右边有多少连续比它大的
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)    scanf("%d",&a[i]);
    int cnt=0;int ans=1;
    for(int i=1;i<=n;i++)
    {
        if(a[i]>a[i-1])
        {
            cnt++;
            l[i]=cnt;
            if(i!=n) ans=max(ans,l[i]+1);
            else     ans=max(ans,l[i]);
        }
        else l[i]=1,cnt=1;
    }cnt=0;
   // for(int i=1;i<=n;i++) cout<<l[i]<<' ';
   // cout<<endl;
    for(int i=n;i>=1;i--)
    {
        if(a[i+1]>a[i])
        {
            cnt++;
            r[i]=cnt;
            if(i!=1) ans=max(ans,r[i]+1);
            else     ans=max(ans,r[i]);
        }
        else r[i]=1,cnt=1;
    }
   // for(int i=n;i>=1;i--) cout<<r[i]<<' ';
   // cout<<endl;
    for(int i=1;i<=n;i++)
    {
       if(a[i+1]-a[i-1]>1) ans=max(ans,l[i-1]+r[i+1]+1);
    }
    cout<<ans<<endl;
    return 0;
}