开始翻一个很大的错误--读一个数字处理,中间还有break,这样有可能一行的数字没有读完就结果出来了(break出去了),导致下一行仍然再读旧数据
因此必须开一个数组存储每一行的数字
#include <cstdio>
#include <stack>
using namespace std;
int main(){
freopen("in.txt","r",stdin);
int len,n,k;
scanf("%d %d %d",&len,&n,&k);
for(int j=0;j<k;j++){
int visit=1;
stack <int> s;
int flag=1;
int a[1010];
for(int p=0;p<n;p++){
scanf("%d",&a[p]);
}
for(int p=0;p<n;p++){
if(a[p]<visit-1){
if(s.top()!=a[p]){
flag=0;
break;
}else{
s.pop();
}
}else{
for(int i=visit;i<=a[p];i++){
visit++;
s.push(i);
}
if(s.size()>len){
flag=0;
break;
}
s.pop();
}
}
if(flag){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}