被黑客了
#include<bits/stdc++.h>
using namespace std;
int num[100001];
string s;
int n,t,maxx[100001],len;
int getPos(int x){
int l=1;
int r=len;
while(l<=r){
int m=(l+r)/2;
if(maxx[m]>=x){
l=m+1;
}else{
r=m-1;
}
}
return r;
}
int getIdx(int x){
int l=1;
int r=len;
while(l<=r){
int m=(l+r)/2;
if(maxx[m]==x){
return m;
}else if(maxx[m]>x){
r=m-1;
}else{
l=m+1;
}
}
return l;
}
int main(){
getline(cin,s);
for(int i=0;i<s.size();i++){
if(s[i]==' '){
n++;
num[n]=t;
t=0;
}else{
t*=10;
t+=(s[i]-'0');
}
}
n++;
num[n]=t;
maxx[1]=num[1];
len=1;
for(int i=2;i<=n;i++){
int pos=getPos(num[i]);
len=max(len,pos+1);
maxx[pos+1]=max(maxx[pos+1],num[i]);
}
cout<<len;
memset(maxx,0,sizeof(maxx));
len=0;
maxx[1]=num[1];
len=1;
for(int i=2;i<=n;i++){
sort(maxx+1,maxx+len+1);
int idx=getIdx(num[i]);
if(idx>len){
len++;
maxx[len]=num[i];
}else{
maxx[idx]=min(maxx[idx],num[i]);
}
}
cout<<endl<<len;
return 0;
}