Luka__Modric @ 2024-05-03 19:11:09
#include<bits/stdc++.h>
using namespace std;
int n,dp[100010];
struct node{
int p1,p2;
}p[100010];
bool cmp(node x,node y){
return x.p1<y.p1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>p[i].p1;
for(int i=1;i<=n;i++)
cin>>p[i].p2,dp[i]=1e9+10;
sort(p+1,p+n+1,cmp);
dp[0]=-1e9-10;
for(int j=1;j<=n;j++){
int i=lower_bound(dp+1,dp+j+1,p[j].p2)-dp;
dp[i]=p[j].p2;
}
for(int i=n;i>=1;i--){
if(dp[i]!=1e9+10){
cout<<i;
return 0;
}
}
}