求助QAQ
查看原帖
求助QAQ
1287433
__ycy1124__楼主2024/7/8 16:50
#include<bits/stdc++.h>
using namespace std;
int p1[100001],p2[100001];
int a[100001];
int n,tot=0;
int work(int x){
	int l=1,r=tot,ans;
	while(l<=r){
		int mid=l+r>>1;
		if(a[mid]>x){
			r=mid-1;
			ans=mid;
		}
		else{
			l=mid+1;
			ans=mid+1;
		}
	}
	return ans;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&p1[i]);
	} 
	for(int i=1;i<=n;i++){
		scanf("%d",&p2[p1[i]]);
	}
	for(int i=1;i<=n;i++){
		if(p2[i]>a[tot]){
			a[++tot]=p2[i];
		}
		else{
			a[work(p2[i])]=p2[i];
		}
	}
	printf("%d",tot);
	return 0;
}
2024/7/8 16:50
加载中...