範例程式碼 uva11286
//uva11286
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
#include <cstdio>
#define NUM 5
#define LEN 20
using namespace std;
// P_jp禡 - 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(); // OsҦX{Lҵ{զX + ܸӽҵ{զXH
for(int d = 0; d < dataNum; d++) {
// oҵ{s
for(int i = 0; i < NUM; i++)
cin >> courseNum[i];
// ƧǹL~P_sO_@P
sort(courseNum, courseNum + NUM);
// q int }Cন char }CAন string
sprintf(numInChar, "%d%d%d%d%d", courseNum[0], courseNum[1], courseNum[2], courseNum[3], courseNum[4]);
numInString = numInChar;
// P_ map O_wX{L
if(course.find(numInChar) == course.end())
course[numInString] = 1; // X{h 1
else
course[numInString]++; // wX{h֥[
}
// X̦hH諸ҵ{զXXӤH
max = max_element(course.begin(), course.end(), isBig);
// XҦ̦hH諸ҵ{զXòέpH
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;
}