WA 16点,求助,必关!
查看原帖
WA 16点,求助,必关!
1274525
Gilbert1206楼主2025/7/24 16:20
#include<bits/stdc++.h>
using namespace std;
#define int long long
set<int>a,b;
int ap[250000],bp[250000],aa[250000],bb[250000];
string vis[250000];
map<int,int> ak;
signed main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>aa[i];
		a.insert(aa[i]);
		ap[i]=a.size();
	}
	for(int i=1;i<=n;i++){
		cin>>bb[i];
		b.insert(bb[i]);
		bp[i]=b.size();
	}
//	for(int i=1;i<=n;i++){
//		cout<<ap[i]<<" ";
//	}
//	cout<<endl;
//	for(int i=1;i<=n;i++){
//		cout<<bp[i]<<" ";
//	}
	int l=1,r=1,cnt=0;
	while(l<=n&&r<=n){
		if(ak[aa[l]]==-1){
			cnt++;
		}
		if(ak[aa[l]]==0){
			cnt--;
		}
		ak[aa[l]]++;
		if(ak[bb[r]]==1){
			cnt++;
		}
		if(ak[bb[r]]==0){
			cnt--;
		}
		ak[bb[r]]--;
		if(cnt==0){
			vis[ap[l]]="Yes";
		}
		else{
			vis[ap[l]]="No";
		}
		if(ap[l+1]==bp[r+1]){
			if(l+1>n&&r+1>n){
				break;
			}
			if(l+1>n){
				r++;
			}
			else if(r+1>n){
				l++;
			}
			else{
				l++,r++;
			}
			
		}
		else if(ap[l+1]==ap[l]){
			l++;
		}
		else{
			r++;
		}
	}
	int m;
	cin>>m;
	while(m--){
		int x,y;
		cin>>x>>y;
		if(ap[x]!=bp[y]){
			cout<<"No"<<endl;
		}
		else{
			cout<<vis[ap[x]]<<endl;
		}
	}
	return 0;
}
2025/7/24 16:20
加载中...