30pts求调
查看原帖
30pts求调
909451
123asd45__楼主2023/12/3 19:49
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
int a[100010],b[100010];
int f[100010];
int c[100010],d[100010];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		c[i]=i;
	}
	for(int i=1;i<=n;i++){
		cin>>b[i];
		d[i]=a[b[i]];
	}
	/*for(int i=1;i<=n;i++){
		//cout<<c[i]<<" ";
	}
	//cout<<endl;
	for(int i=1;i<=n;i++){
		//cout<<d[i]<<" ";
	}*/
	int len=0;
	for(int i=1;i<=n;i++){
		if(d[i]>f[len]){
			f[++len]=d[i];
		}
		else{
			int p=lower_bound(f+1,f+len+1,d[i])-f;
			f[p]=d[i];
		}
	}
	cout<<len;
	
	return 0;
}
2023/12/3 19:49
加载中...