题干


C++实现
#include <stdio.h>
#include <list>
#include <vector>
using namespace std;
int main() {
int n, k;
scanf("%d%d", &n, &k);
vector<int> insertVec(n);
for (int i = 0; i < n; ++i) {
scanf("%d", &insertVec[i]);
}
for (int i = 0; i < k; ++i) {
vector<int> outputVec(n);
for (int j = 0; j < n; ++j) {
scanf("%d", &outputVec[j]);
}
bool flag = true;
list<int> myQueue;
int j = 0, k = 0;
for (; j < n; ++j) {
myQueue.push_back(insertVec[j]);
while (!myQueue.empty() && (myQueue.front() == outputVec[k] || myQueue.back() == outputVec[k])) {
if (myQueue.front() == outputVec[k]) {
myQueue.pop_front();
} else {
myQueue.pop_back();
}
++k;
}
}
if (myQueue.empty()) {
printf("yes\n");
} else {
printf("no\n");
}
}
return 0;
}