提交时间:2023-12-04 13:38:00

运行 ID: 113904

#include<bits/stdc++.h> using namespace std; int n,k,sid,ans; int a[1001],dp[1001],pre[1001]; int print(int x) { if(x==0) return 0; print(pre[x]); cout<<a[x]<<" "; } int main() { while(~scanf("%d",a+1+n)) n++; for(int i=1;i<=n;i++) { int l=0;k=0; for(int j=1;j<i;j++) if((a[j]<a[i])&&l<dp[j]) { l=dp[j]; k=j;//下标 } dp[i]=l+1; pre[i]=k;//前驱 if(dp[i]>ans) { ans=dp[i]; sid=i;//下标 } } cout<<"max="<<ans<<endl; print(sid); return 0; }