不知道为啥第二个测试点出问题
#include <bits/stdc++.h>
using namespace std;
const int MAXX=100000+5;
const int INF=INT_MAX;
int dp[MAXX];
int a[MAXX],b[MAXX];
int main()
{
int n;
cin>>n;
int v;
for(int i=0; i<n; i++)
{
cin>>v;
a[v]=i;//把a[i]映射到i
}
for(int i=0; i<n; i++)
{
cin>>v;
b[i]=a[v];//把b数组按照a数组的映射规则进行映射
}
// for(int i=0; i<n; i++)
// dp[i]=INF; //初始化
int pos=0; // 记录dp当前最后一位的下标
//dp[0]=b[0];
for(int i=0; i<n; i++)
{
if(b[i]>dp[pos])
dp[++pos]=b[i];
else
dp[lower_bound(dp,dp+pos+1,b[i])-dp]=b[i];
}
//if(pos!=99999)
cout<<pos<<endl;
//else cout<<100000<<endl;
return 0;
}