参考来源:1051. Pop Sequence (25)-PAT甲级真题(栈模拟)
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
int main() {
int m, n, k;
cin>>m>>n>>k;
for(int i = 0; i < k; i++)
{
bool flag = false;
stack<int> s;
vector<int> v(n + 1);
for(int j = 1; j <= n; j++)//把输入的序列放入数组v中
{
cin>>v[j];
}
int current = 1;//指向待出栈的元素
for(int j = 1; j <= n; j++)
{
s.push(j);
if(s.size() > m) break;
while(!s.empty() && s.top() == v[current])
{
s.pop();
current++;
}
}
if(current == n + 1) flag = true;
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}