#include<bits/stdc++.h>
using namespace std;
int n;
int a[100005];
int f[100005];
int main(){
while(cin>>a[++n]){
}
int l=0;
for(int i=n;i>=1;i--){
int pos=upper_bound(f+1,f+l+1,a[i])-f;
f[pos]=a[i];
l=max(l,pos);
}
printf("%d\n",l-1);
l=0;
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){
int pos=lower_bound(f+1,f+l+1,a[i])-f;
f[pos]=a[i];
l=max(l,pos);
}
printf("%d",l);
return 0;
}
详见第20行,不减一就过不了 :(
为什么啊 QWQ