3 6 100 100 100 99 98 101 6 100 100 100 99 99 101 6 100 100 98 99 99 97
Case #1: 10000 Case #2: Bad Mushroom Case #3: 9999 10000
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <map>
typedef __int64 ll;
using namespace std;
const int maxn = 1000005;
ll n, num[maxn];
map<ll, int> mp; 
int main() {
	int t, cas = 1;
	scanf("%d", &t);
	while (t--) {
		scanf("%I64d", &n);
		ll a;
		mp.clear();
		for (int i = 0; i < n; i++) {
			scanf("%I64d", &a);
			mp[10000 - (100 - a) * (100 - a)]++;
		}
		int ok = 0;
		int first = mp[10000 - (100 - a) * (100 - a)];
		int Max = 0;
		for (map<ll, int>::iterator i = mp.begin(); i != mp.end(); i++) {
			if ((*i).second != first)
				ok = 1;
			Max = max(Max, (*i).second);
		}
		printf("Case #%d:\n", cas++);
		if (mp.size() == 1) {
			printf("%I64d\n", (ll)10000 - (100 - a) * (100 - a));
			continue;
		}
		if (ok == 0) {
			printf("Bad Mushroom\n");
			continue;
		}
		int flag = 1;
		for (map<ll, int >::iterator i = mp.begin(); i != mp.end(); i++) {
			if ((*i).second == Max) {
				if (flag) {
					printf("%I64d", (*i).first);
					flag = 0;
				}
				else printf(" %I64d", (*i).first);
			}
		}
		printf("\n");
	}
	return 0;
}原文:http://blog.csdn.net/u011345136/article/details/39458389