(水题卡了,血压很高
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int N, M, K;
scanf("%d %d %d", &M, &N, &K);
int popList[N];
for (int i = 0; i < K; ++i)
{
stack<int> s;
bool valid = 1;
for (int j = 0; j < N; ++j)
scanf("%d", &popList[j]);
int kk = 0,j = 1;
while (kk < N && valid)
if (j == popList[kk] && s.size() < M)
{
kk++;
j++;
}
else if (!s.empty() && popList[kk] == s.top())
{
s.pop();
kk++;
}
else
{
s.push(j);
j++;
if (s.size() > M)
{
valid = 0;
break;
}
}
if (valid)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}