1051. Pop Sequence (25)

#include <iostream>
#include <stack>

using namespace std;

int main()
{
	int m, n, k;
	scanf("%d%d%d", &m, &n, &k);

	int i, num[1010], j, index, flag, begin;
	stack<int> s;

	for(i = 1; i <= k; i++)
	{
		for(j = 1; j <= n; j++)
		{
			scanf("%d", &num[j]);
		}

		index = flag = begin = 1;
		while(s.size() > 0)
		{
			s.pop();
		}

		while(1)
		{
			while(s.size() == 0 || s.top() != num[index])
			{
				if(s.size() < m && begin <= n)
				{
					s.push(begin++);
				}
				else
				{
					flag = 0;
					break;
				}
			}

			if(flag == 0)
			{
				break;
			}

			if(s.top() != num[index])
			{
				flag = 0;
				break;
			}

			s.pop();
			index++;

			if(index > n)
			{
				break;
			}
		}

		if(flag == 1 && index > n)
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}
	
	system("pause");
	return 0;
}

 

posted on 2025-11-23 17:08  王景迁  阅读(0)  评论(0)    收藏  举报

导航