题目大意
给一个容量为 M M M的栈,现在有 N N N个数所组成的序列,问由 1 1 1~ N N N的入栈后再出栈能否构成所给序列
输入
每组包含一个测试用例
第一行是三个数,都不超过1000。
M
M
M栈的最大容量,
N
N
N所给的出栈序列的长度,
K
K
K需要检查的出栈序列的个数
然后是
K
K
K行,每行
N
N
N个数表示一个出栈序列
输出
对每个需要检查的序列,如果能够成就输出YES
,否则输出NO
样例输入
5 7 5
1 2 3 4 5 6 7
3 2 1 7 5 6 4
7 6 5 4 3 2 1
5 6 4 3 7 2 1
1 7 6 5 4 3 2
样例输出
YES
NO
NO
YES
NO
解析
模拟栈的输入输出
# -*- coding: utf-8 -*-
# @Time : 2019/6/8 16:59
# @Author : ValarMorghulis
# @File : 1051.py
def solve():
m, n, k = map(int, input().split())
for i in range(k):
stack=list()
flag = True
a = list(map(int, input().split()))
pos = 0
for j in range(1, n + 1):
stack.append(j)
if len(stack) > m:
flag = False
break
while stack and stack[-1] == a[pos]:
stack.pop()
pos += 1
if not flag:
print("NO")
elif pos == n:
print("YES")
else:
print("NO")
if __name__ == "__main__":
solve()