#include<bits/stdc++.h>
using namespace std;
int b[100010];
vector<int>ans;
int main()
{
int n,cnt=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>b[i];
ans.push_back(b[1]);
for(int i=2;i<=n;i++){
if(b[i]<ans[ans.size()-1])*lower_bound(ans.begin(),ans.end(),b[i]) = b[i];
else ans.push_back(b[i]);
}
printf("%d\n",ans.size());
return 0;
}
哦 既然根据规则 不管什么顺序进来 都得按照1,2,3...n-1,n的顺序来的话
由于列车要逆序输出 那么如果同一轨道 大号车在小号车后面 那么无论怎样 都会使得大号车走在小号车后面
所以当号码超过某个轨道的队尾时 就要重新开个轨道来处理
那么就是二分所有队尾咯~