输入格式可能会有点复杂 这个翻译过来大概就是依次输入1~n,然后给你一组出栈方式,判断是否合法

#include<iostream>
#include<stack>
using namespace std;
const int N=1e5+10;
int n;
int a[N];
stack<int> st;
int main()
{
	while(cin>>n&&n)
    {
    	while(1)
        {
        	int s;
            cin>>s;
            if(!s)
            {
            	cout<<endl;
                break;
            }
            a[1]=s;
            for(int i=2;i<=n;i++)
            cin>>a[i];
            int j=1;//设置校准编号,根据先进后出的原理,a表示的是出栈顺序
            for(int i=1;i<=n;i++)
            {
            	st.push(i);
                while(!st.empty()&&st.top()==a[j])//只要出栈了,j就向后移
                {
                	st.pop();
                    j++;
                }
            }
            if(st.empty())cout<<"Yes"<<endl;
            else cout<<"No"<<endl;
            while(!st.empty())st.pop();
        }
    }
    return 0;
}