注释详细
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
int N, M, K;
int check()
{
//该放的瓶子数
int cur = 1;
// stack<int> s;
vector<int> s;
vector<int> v(N);
for (int i = 0; i < N; ++i)
{
cin >> v[i];
}
for (int i = 0; cur <= N;)
{
//先看货架上有没有
if (s.size() > 0 && s.back() == cur)
// if (s.size() > 0 && s.top() == cur)
{
s.erase(s.end() - 1);
// s.pop();
++cur;
}
else
{
//如果正好是那个该放的
if (cur == v[i])
{
++cur;
++i;
}
else
{
//加到货架里
if (s.size() < M)
// s.push(v[i++]);
s.push_back(v[i++]);
//货架放不下
else
return 0;
}
}
}
return 1;
}
int main()
{
cin >> N >> M >> K;
while (K--)
{
cout << (check() ? "YES\n" : "NO\n");
}
return 0;
}