B - 投票 / AtCoderBeginnerContest #008

abc008.contest.atcoder.jp

#include <algorithm>
#include <iostream>
#include <map>
#include <string>
using namespace std;

void Solve(int n)	{
	map<string,int> data;
	string s;
	int max_name=0;

	data.clear();
	for (int i=0; i<n; ++i)	{
		cin >> s;
		if ( data.find(s) != data.end() )	max_name=max(max_name,++data[s]);
		else	{
			max_name=max(max_name,1);
			data.insert( map<string,int>::value_type(s,1) );
		}
	}
	for (map<string,int>::iterator it=data.begin(); it!=data.end(); ++it)
		if (max_name == it->second)	{
			cout << it->first << endl;
			break;
		}
}

int main(void)	{
	int n;

	cin >> n;
	Solve(n);
	return 0;
}

最大値を覚えておいて、その値と等しい回数の文字列が出ている場合、
その文字列を出力する。
~了~