来自圣彼得堡动物园的北极熊Menshykov,Uslada和来自基普动物园的大象Horace取得了6支木棍,他们要一起来玩一个木棍游戏。 Menshykov,Uslada和Horace决定用这些木棍去做一头大象或一头熊。它们可以按照以下方法去拼接一个动物:
l 四根棒代表动物的腿,这些木棒应具有相同的长度。
l 剩下的两根代表动物的头部和身体。熊的头棒必须比身体棒短。然而,大象有一个长鼻子,他的头棒必须和身体棒相等。请注意,以上腿棒和头部以及身体棒之间的关系没有任何限制。
动物园饲养员希望比赛结束后棒子没有损坏。你的任务是找出哪些动物可以从给定的一组棒组合成。
输入
输入第一行为数据组数T;
每个测试数据输入6个整数li;
输出
如果可以组合成熊,输出"Bear",如果可以组合成大象,输出"Elephant",否则输出"Alien"!
样例输入
34 2 5 4 4 44 4 5 4 4 51 2 3 4 5 6
样例输出
BearElephantAlien
提示
【数据说明】
对于 30%的数据,T=1;
对于 80%的数据,0<T<10;
对于 100%的数据,0<T<90,1<=li<=9.
分析:水题(锻炼一下map。。。
#include <cstdio>
#include <cstring>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int t;
cin>>t;
map <int,int> p;
while(t--)
{
p.clear();
int b;
for (int i=0;i<6;i++)
{
cin>>b;
if ( p.count(b) == 0) p[b]=1;
else p[b]++;
}
int ok=0;
map<int,int>::iterator it=p.begin();
for (;it!=p.end();it++)
{
if (it->second >=4) {it->second-=4;ok=1;break;}
}
if (!ok) printf("Alien\n");
else
{
int a[2],g=0;
for (it=p.begin();it!=p.end();it++)
{
if (it->second>0 && it->second <2) a[g++]=it->first;
else if (it->second == 2) a[0]=a[1]=it->first;
}
if (a[0]-a[1] == 0) printf("Elephant\n");
else printf("Bear\n");
}
}
return 0;
}
)