用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; }