#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <stack>
using namespace std;
int main()
{
int M,N,K;
cin>>M>>N>>K;
while(K--)
{
//用数组存储数字序列
vector<int> numbers;
for(int i=0;i!=N;i++)
{
int number;
cin>>number;
numbers.push_back(number);
}
//从1开始向序列匹配数字,如果不等于则存入栈中,读入下一个数字,
//如果相等则从栈中提取数字作为下一个(注意栈为空的情况)
stack<int> temp;
int count=0;
for(int j=1;j<=N;)
{
if(j==numbers[count])
{
if(temp.empty())
{
j++;
count++;
}
else
{
count++;
while(!temp.empty()&&(temp.top()==numbers[count]))
{
count++;
temp.pop();
}
j++;
}
}
else
{
if(temp.size()<M-1)
{
temp.push(j);
j++;
}
else
{
break;
}
}
}
if(!temp.empty())
cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}
02-线性结构4 Pop Sequence
最新推荐文章于 2022-12-02 20:19:10 发布