自己模拟了一下,没有用STL里面的stack。
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int main() {
int n, m, k, a;
scanf ("%d %d %d", &m, &n, &k);
v.resize(n + 1);
for (int i = 0; i < k; i++) {
int st[1010], top = -1, flag = 0, pos = 1;
v.clear();
for (int j = 1; j <= n; j++) scanf ("%d", &v[j]);
for (int j = 1; j <= n; j++) {
while (top != -1 && st[top] == v[pos]) {
top--; pos++;
}
if (top == -1 && top <= m - 1) st[++top] = j;
else if (top <= m - 1) st[++top] = j;
if (top == m) flag = 1;
}
while (top != -1 && st[top] == v[pos]) top--; pos++;
if (flag == 1 || top != -1) printf ("NO\n");
else printf ("YES\n");
}
}