#include #include #include using namespace std; vector minimumZooNumbers(int m, int n, vector > a, vector > b) { // Return a list of length n consisting of the answers vector result(n + 1); int x = 0, y = 0, cur = 0; vector> c; vector> d; for (int i = 1; i <= m; i++) { while (a[x].first == i) { int x1 = 0, y1 = 0, mini = m,j1; for (j1 = d.size(); j1>0; j1--) { if (d[j1 - 1].first>a[x].second) { y1++; mini = min(mini, d[j1 - 1].second); } else break; } vector temp; for (int j2 = 0; j2mini) { x1++; temp.push_back(j2); } } if (x1 >= y1) { cur++; result[cur] = i; d.erase(d.begin() + j1, d.end()); for (int k = 0; k0; j1--) { if (c[j1 - 1].first>b[y].second) { x1++; mini = min(mini, c[j1 - 1].second); } else break; } vector temp; for (int j2 = 0; j2mini) { y1++; temp.push_back(j2); } } if (y1 >= x1) { cur++; result[cur] = i; c.erase(c.begin() + j1, c.end()); for (int k = 0; k> cases; for (int a0 = 0; a0 < cases; a0++) { int m; int n; cin >> m >> n; vector t(n); for (int t_i = 0; t_i < n; t_i++) { cin >> t[t_i]; } vector s(n); for (int s_i = 0; s_i < n; s_i++) { cin >> s[s_i]; } vector d(n); for (int d_i = 0; d_i < n; d_i++) { cin >> d[d_i]; } vector> a, b; for (int i = 0; i result = minimumZooNumbers(m, n, a, b); for (size_t i = 0; i < result.size(); i++) { cout << result[i] << (i != result.size() - 1 ? " " : ""); } cout << endl; } return 0; }