dp[i][0]滿足條件A的最大個數
dp[i][1]滿足條件B的最大個數
#include <iostream>
#include <algorithm>
#include <cstring>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int idata=1e5+5;
const int inf=0x3f3f3f3f+5;
const int mod=10;
int dp[idata][2];
int step[idata];
int maxx=-inf,minn;
int i,j,k;
int n,m,t;
int flag,cnt,len,sum;
void initial()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>step[i];
}
dp[1][0]=dp[1][1]=1;
return ;
}
int main()
{
initial();
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
{
if(step[j]>step[i])
dp[j][0]=max(dp[j][0],dp[i][1]+1);
if(step[j]<step[i])
dp[j][1]=max(dp[j][1],dp[i][0]+1);
}
for(i=1;i<=n;i++)
{
maxx=max(dp[i][0],maxx);
maxx=max(dp[i][1],maxx);
}
cout<<maxx<<endl;
return 0;
}