用map,也可以用数组,少了个特判WA了一发。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
using namespace std;
const int maxn=1000005;
int n;
int a[maxn];
int cas=1;
map<int,int>id;
vector<int>ans;
int main()
{
//    freopen("in","r",stdin);
    int t;
    cin>>t;
    while(t--){
        printf("Case #%d:\n",cas++);
        id.clear();
        scanf("%d",&n);
        int x;
        int up=0;
        for(int i=0;i<n;i++){
            scanf("%d",&x);
            int y=10000-(100-x)*(100-x);
            ++id[y];
            up=max(up,id[y]);
        }
        ans.clear();
        for(map<int,int> ::iterator it=id.begin();it!=id.end();it++){
            if(it->second==up)ans.push_back(it->first);
        }
        if(up*ans.size()==n&&ans.size()>1)puts("Bad Mushroom");
        else {
            sort(ans.begin(),ans.end());
            for(int i=0;i<ans.size();i++)printf("%d%c",ans[i],i==ans.size()-1?'\n':' ');
        }
    }
    return 0;
}