版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leekerian/article/details/88929444
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
int vis[1111];
stack<int> st;
int main()
{
int n,m,k;
cin>>n>>m>>k;
int num[1111];
for(int j=0;j<k;j++)
{
while(!st.empty())
st.pop();
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
cin>>num[i];
int n1=0;
st.push(num[0]);
vis[num[0]]=1;
int n2=1;
int fg=1;
while(!st.empty())
{
while(st.top()==n2)
{
n2++;
st.pop();
if(st.empty())
break;
}
if(st.empty()&&n2==n+1)
break;
else
{
if(vis[n2])
{
fg=0;
break;
}
}
n1++;
vis[num[n1]]=1;
st.push(num[n1]);
if(st.size()>m+1)
{
fg=0;
break;
}
}
if(fg) printf("YES\n");
else printf("NO\n");
}
return 0;
}