我用没母亲的dp做的
#include<bits/stdc++.h>
using namespace std;
int l=0;
int f[100005],arr[100005],s,h[100005],x;
int check(int a){
bool f=1;
for(int i=1;i<=x;++i){
if(h[i]>=a) f=0;
}
return f;
}
int main(){
while(cin>>arr[++l]);
l--;
for(int i=1;i<=l;++i){
for(int j=1;j<i;++j){
if(arr[i]>arr[j]) continue;
f[i]=max(f[j],f[i]);
}
f[i]+=1;
s=max(s,f[i]);
}
cout<<s;
for(int i=1;i<=l;++i){
int m1=30001,m2;
if(x==0||check(arr[i])){
x++;
h[x]=arr[i];
}
else{
for(int j=1;j<=x;++j){
if(h[j]<m1&&h[j]>=arr[i]){
m1=h[j];
m2=j;
}
}
h[m2]=arr[i];
}
}
cout<<'\n'<<x;
return 0;
}
我的评测情况