#include <cstdio>
#include <stack>
using namespace std;
stack<int> s;
int arr[1010];
int main(){
int m, n, k;
scanf("%d %d %d", &m, &n, &k);
int temp;
for(int i=0; i<k; i++){
int flag = 1;
int c = 0;
while(!s.empty()){
s.pop();
}
for(int j=0; j<n; j++){
scanf("%d", &arr[j]);
}
for(int j=1; j<=n; j++){
s.push(j);
if(s.size() > m){
flag = 0;
break;
}
while(!s.empty() && s.top()==arr[c]){
s.pop();
c++;
}
}
if(flag && s.empty()){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}
开一个数组来记录给出的出栈顺序,然后和真实的出栈顺序进行比较。
注意:如果比较过程中,出现栈的存储容量超出了则最大范围则不能成功