20pts求条
查看原帖
20pts求条
683531
zyc232008楼主2024/8/23 11:48
#include<bits/stdc++.h>
using namespace std;
int t,n,a[100005],b[100005],ans[100005],top;
bool vis[100005];
int main(){
	cin>>t;
	while(t--){
		cin>>n;
		memset(vis,0,sizeof vis);
		stack<int>sta;
		for(int i=1;i<=n;i++){cin>>a[i];}
		for(int i=1;i<=n;i++){cin>>b[i];}
		int j=0;
		top=0;
		bool flag=1;
		for(int i=1;i<=n;i++){
			if(!vis[b[i]]){
				while(!vis[b[i]]){
					sta.push(a[++j]);
					vis[a[j]]=1;
					j++;
				}
			}
			while(!sta.empty()){
				ans[++top]=sta.top();
				//cout<<sta.top()<<" ";
				sta.pop();
			}
		}
		for(int i=1;i<=n;i++){if(ans[i]!=b[i]){flag=0;}}
		if(flag)cout<<"Yes\n";
		else cout<<"No\n";
	}
}
2024/8/23 11:48
加载中...