栈模拟。
代码如下:
#include<bits/stdc++.h>
#define lowbit(x) ((x)&(-(x)))
#define ll long long
#define INF 0x3f3f3f3f
#define CLR(a) memset(a, 0, sizeof(a))
using namespace std;
stack<int> s;
int m,n,k;
int a[10005],b[10005];
int main() {
cin>>m>>n>>k;
for(int i=0;i<k;i++){
CLR(a);
CLR(b);
for(int j=0;j<n;j++){
cin>>b[j];
a[j]=j+1;
}
int cnta=0,cntb=0;
while(cnta!=n){
s.push(a[cnta]);
cnta++;
if(s.size()>m)
break;
while(!s.empty()&&(s.top()==b[cntb])){
s.pop();
cntb++;
}
}
if(s.size()>0)
printf("NO\n");
else
printf("YES\n");
while(!s.empty())
s.pop();
}
return 0;
}