乱搞出来的,有人能给个详细的解释吗
#include<bits/stdc++.h>
using namespace std;
int dp[1000005],a[100005],maxn=1,t,v[1000005],l;
int main(){
while(cin>>a[++t]);
t--;
for(int i=1;i<=t;i++){
dp[i]=1;
for(int j=l;j>0;j--){
if(a[i]<=a[v[j]]){
dp[i]=dp[v[j]]+1;
break;
}
}
l=max(l,dp[i]);
v[dp[i]]=i;
maxn=max(maxn,dp[i]);
}
cout<<maxn<<endl;
maxn=1;
l=0;
for(int i=1;i<=t;i++){
dp[i]=1;
for(int j=l;j>0;j--){
if(a[i]>a[v[j]]) {
dp[i]=dp[v[j]]+1;
break;
}
}
l=max(l,dp[i]);
v[dp[i]]=i;
maxn=max(maxn,dp[i]);
}
cout<<maxn;
}