#include <utility> #include <vector> class CatDogAsylum { void cleanup(vector<pair<int, bool>>& stacks) { vector<pair<int, bool>> new_stacks; for (const auto& s : stacks) { if (s.second) new_stacks.push_back(s); } stacks =std::move(new_stacks); } public: vector<int> asylum(vector<vector<int> > ope) { // write code here vector<int> res; vector<pair<int, bool>> stacks; for(auto op: ope){ if(op[0] == 1){ stacks.emplace_back(op[1], true); } if(op[0]==2){ if (op[1] == 0 ) { for(auto &s: stacks){ if (s.second) { res.emplace_back(s.first); s.second=false; break; } } } if (op[1] == -1) { for(auto &s: stacks){ if (s.first<0 && s.second) { res.emplace_back(s.first); s.second = false; break; } } } if (op[1] == 1) { for(auto &s: stacks){ if (s.first>0 && s.second) { res.emplace_back(s.first); s.second=false; break; } } } } if(stacks.size()>1000) cleanup(stacks); } return res; } };