dp部分O(n2),有没有人优化一下
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[100001],dp[100001]={0},n=0,s[100001]={0},m=0;
while(cin>>a[++n]);
for(int i=1;i<=n;i++){
for(int j=i-1;j>=1;j--){
if(a[j]>=a[i]){
dp[i]=max(dp[j],dp[i]);
}
}
dp[i]++;
}
cout<<dp[n]-1<<endl;
for(int i=1;i<=n;i++){
int k=0;
for(int j=1;j<=m;j++){
if(s[j]>=a[i]&&(!k||s[k]>s[j])){
k=j;
}
}
if(k){
s[k]=a[i];
}
else{
s[++m]=a[i];
}
}
cout<<m;
return 0;
}