//求长度
#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
#define ll long long
ll l=1;
string s="123455589";
int ss[201];
vector<string>vt;
int main(){
ss[0]=s[0];
for(int i=1;i<9;i++){
int loc=lower_bound(ss,ss+l,s[i])-ss;
if(loc==l)l++;
ss[loc]=s[i];
}
cout<<l;
return 0;
}
//求最长且字典序最短的序列
#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
#define ll long long
ll l=1;
string s="123463589";
int ss[201];
vector<string>vt;
int main(){
for(int i=0;i<9;i++)vt.push_back("");
vt[0]+=s[0];
ss[0]=s[0];
for(int i=1;i<9;i++){
int loc=lower_bound(ss,ss+l,s[i])-ss;
if(loc==l)vt[l]=vt[l-1]+s[i],l++;
else vt[loc][vt[loc].size()-1]=s[i];//出现序列相等且字典序更小
ss[loc]=s[i];
}
cout<<vt[l-1];//答案:1234589
return 0;
}