不是前100分可以用o(n^2)做法吗
#include <bits/stdc++.h>
using namespace std;
int num[1000010],dp1[1000010],dp2[1000010],maxn1=0,maxn2=0;
int main(){
int n=1;
while (1){
scanf("%d",&num[n]);
if (cin.get()=='\n')break;
n++;
}
for (int i=1;i<=n;i++){
dp1[i]=1;dp2[i]=1;
for (int j=1;j<i;j++){
if (num[j]<num[i]){
dp2[i]=max(dp2[i],dp2[j]+1);
}
if (num[j]>=num[i]){
dp1[i]=max(dp1[i],dp1[j]+1);
}
}
if (dp1[i]>maxn1)maxn1=dp1[i];
if (dp2[i]>maxn2)maxn2=dp2[i];
}
printf("%d\n%d",maxn1,maxn2);
return 0;
}