和书上写法不一样,输出的数是对的,但不确定能否通过测试。
#include <iostream> #include <cstdio> #include <algorithm> #include <queue> using namespace std; int main(){ int n, m, t, animal; cin >> n; queue<int> dogs; queue<int> cats; queue<int> all; queue<int> ans; while(n--){ cin >> m >> t; if(m == 1){ if(t > 0){ dogs.push(t); }else{ cats.push(t); } all.push(t); } if(m == 2 && !all.empty()){ if(t == 0 ){ animal = all.front(); if(animal > 0 && !dogs.empty()) { dogs.pop(); ans.push(animal); } else if(animal < 0 && !cats.empty()){ cats.pop(); ans.push(animal); } all.pop(); }else if(t == 1 && !dogs.empty()){ ans.push(dogs.front()); dogs.pop(); all.pop(); }else if(t == -1 && !cats.empty()){ ans.push(cats.front()); cats.pop(); all.pop(); } } } while(!ans.empty()){ printf("%d ", ans.front()); ans.pop(); } return 0; }
一些按照题目给的格式写的代码
https://blog.csdn.net/WYXHAHAHA123/article/details/97263876
题目下也有答案
https://www.nowcoder.com/questionTerminal/6235a76b1e404f748f7c820583125c50