UVa514 Rails

https://vjudge.net/problem/UVA-514

#include<iostream>
#include<cstdio>
#include<string.h>
#include<stack>
#include<set>
#include<map>
#include<vector>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;

int n;
int num[1010];

int main()
{
    while (cin >> n && n)
    {
        while (1)
        {
            stack<int> s;
            int A = 1, B = 1;//进站和出站顺序
            cin >> num[1];
            if (num[1] == 0)
                break;
            for (int i = 2; i <= n; i++)
                cin >> num[i];

            for (int i = 1, j = 1; i <= n && j <= n;)
            {
                if (num[i] == j)
                {
                    i++; j++;
                }
                else if (!s.empty() && s.top() == num[i])
                {
                    s.pop(); i++;
                }
                else
                {
                    s.push(j++);
                }
            }
            if (s.empty())
                cout << "Yes" << endl;
            else
                cout << "No" << endl;
        }
        cout << endl;
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_39479426/article/details/81436984