#include #include #include #include using namespace std; struct name { string nume; string prenume; }persoane[105]; int main() { int nr_counters, nr_persoane; string nume; string prenume; string myName; int nr_operatii, operatie, counter, k, ok; // cozile de la countere deque cozii[105]; // starea fiecarei cozi, pt fiecare coada avem o stare // initial toate sunt 0 adica inchise vector stare_coada(105); cin >> nr_counters >> nr_persoane; // citim persoanele for(int i = 0; i < nr_persoane; ++i) { cin >> persoane[i].nume; cin >> persoane[i].prenume; } cin >> nr_operatii; for(int i = 0; i < nr_operatii; ++i) { cin >> operatie; switch (operatie) { case 1: cin >> counter; // se schimba starea stare_coada[counter] = !stare_coada[counter]; // toti oamenii pleaca daca se inchide if(stare_coada[counter] == 0) cozii[counter].clear(); break; case 2: cin >> counter; cin >> myName; for(int i = 0; i < nr_persoane; ++i) { if(persoane[i].nume == myName || persoane[i].prenume == myName) cozii[counter].push_back(persoane[i]); } break; case 3: cin >> counter; if(cozii[counter].size() > 0 && stare_coada[counter] == 1) cozii[counter].pop_front(); break; case 4: cin >> counter; if(cozii[counter].size() == 0 || stare_coada[counter] == 0) cout << "-1" << endl; else { for(k = cozii[counter].size()-1; k > 0; --k) cout << cozii[counter].at(k).nume + " " + cozii[counter].at(k).prenume + " "; cout << cozii[counter].at(0).nume + " " + cozii[counter].at(0).prenume << endl; } break; case 5: cin >> myName; ok = 0; for(int i = 0; i < nr_counters; ++i) { if(stare_coada[i] == 1) { for(int j = 0; j < cozii[i].size(); ++j) { if(cozii[i].at(j).nume == myName || cozii[i].at(j).prenume == myName) { cout << i << endl; ok = 1; break; } } } } if(ok == 0) cout << "-1" << endl; break; } } return 0; }