猫狗收容所
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include <vector>
#include<queue>
using namespace std;
struct Animals
{
int number;//本身编号
int order;//进入次序
Animals(){}
Animals(int n,int o):number(n),order(o){}
};
queue<Animals> cats;//猫队
queue<Animals> dogs;//狗队
int main(){
int n;
scanf("%d",&n);
int order = 0;
for(int i = 0;i< n ;i++){
cout<<i<<endl;
int event;
scanf("%d",&event);
if(event == 1){//加入队列,进入收容所
int number;
scanf("%d",&number);
if(0 < number){
dogs.push(Animals(number,order++));
}else{
cats.push(Animals(number,order++));
}
}
else{//出队,收养
int type;//收养类型
scanf("%d",&type);
//type = 0:收养最前面的动物(此时要比较猫队和狗队的队头元素谁的order更小)
if(type == 0 && !dogs.empty() && !cats.empty()){
if(dogs.front().order < cats.front().order){
printf("%d ",dogs.front().number);
dogs.pop();
}else{
printf("%d ",cats.front().number);
cats.pop();
}
}else if(type == 0 && !dogs.empty() && cats.empty()){
printf("%d ",dogs.front().number);
dogs.pop();
}else if(type == 0 && dogs.empty() && !cats.empty()){
printf("%d ",cats.front().number);
cats.pop();
}
//type = 1:收养最前面的狗
else if(type == 1 && !dogs.empty()){
printf("%d ",dogs.front().number);
dogs.pop();
//type = -1:收养最前面的猫
}else if(type == -1 && !cats.empty()){
printf("%d ",cats.front().number);
cats.pop();
}
}
}
printf("\n");
return 0;
}