範例程�碼 uva11286

//uva11286
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
#include <cstdio>
#define NUM 5
#define LEN 20

using namespace std;

// §PÂ_¤j¤p¨ç¦¡ - ¨Ñ max_element() ¨Ï¥Î
bool isBig(map<string, int>::value_type &a, map<string, int>::value_type &b) {
	return (a.second < b.second);
}

int main() {
	int dataNum, courseNum[NUM], ans;
	map<string, int> course;
	map<string, int>::iterator max;
	char numInChar[LEN];
	string numInString;

	while(cin >> dataNum) {	// ¨ú±o¾Ç¥Í¤H¼Æ
		if(dataNum == 0)
			break;

		// initialize
		ans = 0;	// ¬ö¿ý³Ì²×µª®×
		course.clear();	// «O¦s©Ò¦³¥X²{¹Lªº½Òµ{²Õ¦X + ¿ï¾Ü¸Ó½Òµ{²Õ¦Xªº¤H¼Æ

		for(int d = 0; d < dataNum; d++) {
			// ¨ú±o½Òµ{½s¸¹
			for(int i = 0; i < NUM; i++)
				cin >> courseNum[i];

			// ±Æ§Ç¹L¤~¯à§PÂ_½s¸¹¬O§_¤@­P
			sort(courseNum, courseNum + NUM);

			// ±q int °}¦CÂন char °}¦C¦AÂন string
			sprintf(numInChar, "%d%d%d%d%d", courseNum[0], courseNum[1], courseNum[2], courseNum[3], courseNum[4]);
			numInString = numInChar;

			// §PÂ_ map ¤¤¬O§_¤w¥X²{¹L
			if(course.find(numInChar) == course.end())
				course[numInString] = 1;	// ¥¼¥X²{«h¼Ð 1
			else
				course[numInString]++;		// ¤w¥X²{«h²Ö¥[
		}

		// §ä¥X³Ì¦h¤H¿ïªº½Òµ{²Õ¦X¦³´X­Ó¤H¿ï
		max = max_element(course.begin(), course.end(), isBig);

		// §ä¥X©Ò¦³³Ì¦h¤H¿ïªº½Òµ{²Õ¦X¨Ã²Î­p¨ä¤H¼Æ
		for(map<string, int>::iterator it = course.begin(); it != course.end(); it++) {
			if((*it).second == (*max).second)
				ans += (*max).second;
		}

		// ¿é¥X³Ì²×µª®×
		cout << ans << endl;
	}

	return 0;
}