L2-032 彩虹瓶 (25 分)

合法的出栈序列。

注意和1051 Pop Sequence (25 分)的区别。

上题要求必须出栈元素必须入栈,而本题出栈元素并不是必须入栈。

int n,m,k;

int main()
{
    cin>>n>>m>>k;

    while(k--)
    {
        vector<int> a(n);
        for(int i=0;i<n;i++) cin>>a[i];

        int cur=1;
        bool ok=true;
        stack<int> stk;
        for(int i=0;i<n;i++)
        {
            stk.push(a[i]);

            while(stk.size() && stk.top() == cur)
            {
                stk.pop();
                cur++;
            }
            
            if(stk.size() > m)
            {
                ok=false;
                break;
            }
        }

        if(stk.size() || !ok) puts("NO");
        else puts("YES");
    }
    //system("pause");
    return 0;
}
posted @ 2021-04-21 23:36  Dazzling!  阅读(74)  评论(0)    收藏  举报