#include<cstdio>//只过了两个点
#include<stack>
#include<iostream>
using namespace std;
stack<int> seq;
const int maxsize=1005;
int num[maxsize]={0};
int main(){
int m=0,n=0,k=0,i=0;
scanf("%d %d %d",&m,&n,&k);
while(k--){
while(!seq.empty()) seq.pop();
for(i=0;i<n;i++){
scanf("%d",&num[i]);//输入检查是否存在的序列1234567
}
int ge=0,j=1;
while(ge<n){
if(seq.empty()||seq.top()!=num[ge]){
seq.push(j);j++;
}
else if(seq.top()==num[ge]){//5643721
seq.pop();
ge++;
// if(k==1) cout<<ge<<endl;//test1;
}
if(j>n+1) break;//这里的j一定要大于n+1,因为每次放进j之后,都会自动++!!
if(seq.size()>m) break;
}
if(ge>=n-1){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}
A1051 Pop Sequence(25)
最新推荐文章于 2020-07-08 04:48:49 发布