验证栈序列 TLE 0分

#include<bits/stdc++.h>
using namespace std;
int t;

int main(){
	cin>>t;
	while(t--){
		queue<int>a;
		stack<int>c; 
		int n,b[100005],x;
		cin>>n;
		for(int i=0;i<n;i++){
			cin>>x;
			a.push(x);
		}
		for(int i=0;i<n;i++){
			cin>>b[i];
		}
		bool f=true;
		for(int i=0;i<n;i++){
			if(c.size()&&c.top()==b[i]){
				c.pop();
			}
			else{
				while(a.size()!=0&&a.front()!=b[i]){
					c.push(b[i]);
					c.pop();
				}
				if(a.size()){
					a.pop();
				}
				else{
					f=false;
				}
			}
		}
		if(f==true){
			cout<<"Yes"<<endl;
		}
		else{
			cout<<"No"<<endl;
		}
	}
	return 0;
}

求大神帮忙挑刺找碴

1 个赞

so?

1 个赞