y 总的思路,但是给了手写栈的实现,更快
#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
int m, n, k;
const int N = 1010;
int a[N];
bool check()
{
// stack<int> stk;
int stk[N], top = -1;
for(int i = 1, j = 0; i <= n; i++)
{
// stk.push(i);
stk[++top] = i;
// if(stk.size() > m) return false;
if(top + 1 > m) return false;
// while(!stk.empty() && stk.top() == a[j])
// {
// stk.pop();
// j++;
// }
while(top != -1 && stk[top] == a[j])
{
top--;
j++;
}
}
return stk.empty();
return top == -1;
}
int main()
{
scanf("%d%d%d", &m, &n, &k);
while(k--)
{
for(int i = 0; i < n; i++) scanf("%d", &a[i]);
if(check()) puts("YES");
else puts("NO");
}
return 0;
}