版权声明:假装有个原创声明……虽然少许博文不属于完全原创,但也是自己辛辛苦苦总结的,转载请注明出处,感谢! https://blog.csdn.net/m0_37454852/article/details/86665581
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
//由于输入序列有规律(1~N),其输出也是有迹可循,可推断出栈中元素个数和输出顺序是否合法
int main()
{
int M, N, K;
scanf("%d %d %d", &M, &N, &K);
for(int i=0; i<K; i++)
{
int num = 0, now, last = 0, flag = 0, maxinum = 0;//num为栈中元素个数,maxinum为之前输出的最大值
for(int j=0; j<N; j++)
{
scanf("%d", &now);
num += now - last - 1;
maxinum = max(maxinum, last);
if(num >= M || now < maxinum && now > last) flag = 1;//当前个数大于等于最大容量
last = now;//或者当前值小于最大值,但大于之前输入值,则不合题意
}
if(flag) printf("NO\n");//输出NO
else printf("YES\n");//否则输出YES
}
return 0;
}