向大佬求助!
#include<bits/stdc++.h>
using namespace std;
int arr2[100010];
struct node{
int a, b;
};
node arr[100010];
vector<int> vec;
bool cmp(node a, node b) {
return a.a < b.a;
}
int main() {
int n;
cin >> n;
for(int i=1; i<=n; ++i) {
cin >> arr[i].a;
}
for(int i=1; i<=n; ++i) {
cin >> arr[i].b;
}
sort(arr+1,arr+1+n,cmp);
for(int i=1; i<=n; ++i) {
arr2[i] = arr[i].b;
}
vec.push_back(arr2[1]);
for(int i=2; i<=n; ++i) {
if(arr2[i] > vec[vec.size()-1]) {
vec.push_back(arr2[i]);
}
else
{
int u = lower_bound(vec.begin(),vec.end(),arr2[i])-vec.begin();
vec[u] = arr2[i];
}
}
cout << vec.size();
return 0;
}