C++猫狗收容所题,oj测出来反复不对,求指正

题目描述

有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。

输入描述

给定一个操作序列代表所有事件。若第一个元素为 1 ,则代表有动物进入收容所,第二个元素为动物的编号,正数代表狗,负数代表猫;若第一个元素为 2 ,则代表有人收养动物,第二个元素若为 0 ,则采取第一种收养方式,若为 1 ,则指定收养狗,若为 -1 则指定收养猫。

输出描述

请按顺序返回收养的序列。若出现不合法的操作,即没有可以符合领养要求的动物,则将这次领养操作忽略。

样例输入

1 1
1 -1
2 0
2 -1
样例输出

1 -1

#include <iostream>
#include <queue>
using namespace std;
struct animal{
    int number;
    int order;
    animal(int n,int o){
        number = n;
        order = o;
    }
};
queue<animal> dogs;
queue<animal> cats;
int main(){
    int order = 0;
        int m,t;
        while(cin>>m>>t){
        if(m == 1){
            if(t > 0){
                dogs.push(animal(t,order++));
            }
            else{
                cats.push(animal(t,order++));
            }
        }
        else if(m==0){
            if(t == 0 && !dogs.empty() && !cats.empty()){
                if(dogs.front().order < cats.front().order){
                    cout<<dogs.front().number;
                    dogs.pop();
                }
                else{
                    cout<<cats.front().number;
                    cats.pop();
                }
            }
            else if(t == 0 && !dogs.empty() && cats.empty()){
                cout<<dogs.front().number;
                dogs.pop();
            }
            else if(t == 0 && dogs.empty() && !cats.empty()){
                cout<<cats.front().number;
                cats.pop();
            }
            else if(t == 1 && !dogs.empty()){
                cout<<dogs.front().number;
                dogs.pop();
            }
            else if(t == -1 && !cats.empty()){
                cout<<cats.front().number;
                cats.pop();
            }
        }
        else{
            continue;
            }
        }
    return 0;
}

好像看到我同学了,我在vs上测试都没事,一到oj上就只得10分。。

else if(m==0)换成else if(m==2)就行了 m只有1,2两类