#include using namespace std; class node{ public: int d,s; int g; node () {} node(int d,int g,int s){ this->d=d; this->s=s; this->g=g; } bool operator()(const node &n1,const node &n2)const { if(n2.d!=n1.d) return n1.d>n2.d; else if(n1.g!=n2.g) return n1.g>n2.g; else return n1.s>n2.s; } }; vector minimumZooNumbers(int m, int n, vector t, vector s, vector d) { // Return a list of length n consisting of the answers priority_queue< node,vector,node>pq; for(int i=0;iv; node y; while(!pq.empty()) { y=pq.top(); if(y.d==pd){ if(y.g==0) c1++; if(y.g==1) c2++; pq.pop(); } else { for(int i=0;i> 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 result = minimumZooNumbers(m, n, t, s, d); for (ssize_t i = 0; i < result.size(); i++) { cout << result[i] << (i != result.size() - 1 ? " " : ""); } cout << endl; } return 0; }