请问有什么可以优化的吗
#include<cstdio>
#include<iostream>
using namespace std;
const int N=1e5+5;
int n,a[N],f[N],p[N],len;
int found(int x){
int l=1,r=len,mid;
while(l<r){
mid=(l+r)>>1;
if(p[f[mid]]>p[x])r=mid;
else l=mid-1;
}
return l;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
int k;
for(int i=1;i<=n;i++){
scanf("%d",&k);
p[k]=i;
}
for(int i=1;i<=n;i++){
if(p[a[i]]>p[f[len]]){
f[++len]=a[i];
}else {
f[found(a[i])]=a[i];
}
}
printf("%d",len);
return 0;
}