菜鸡的并不简洁的代码,自定义了比较函数,利用map结构保存姓出现的次数,便于比较时候查找。
之前用二维vector存储,过了91%,改了一维以后来不及提交了,不知道能过多少........
#include <iostream>
#include <map>
#include <vector>
using namespace std;
map<string,int> obj;
vector<string> in;
bool compare(string a,string b){
	string it1,it2;
	int n1=a.find_first_of(" ");
	int n2=b.find_first_of(" ");
	it1.append(a,0,n1);
	it2.append(b,0,n2);
	if(obj.find(it1)->second<obj.find(it2)->second)
            return true;
	else
	    return false;
}
void sort_xm(){
	int i=0,j=0;
	string tmp1;
	for(i=0;i<in.size();i++){
		for(j=0;j<in.size()-i-1;j++){
			if(compare(in[j],in[j+1])){
				tmp1=in[j];
				in[j]=in[j+1];
				in[j+1]=tmp1;
			}
		}
	}
}
int main(){
	map<string,int>::iterator it;
	string x,m;
	int i=0;
	while(cin>>x>>m){
		it=obj.find(x);
		if(it!=obj.end())
			it->second+=1;
		else
			obj.insert(pair<string,int>(x,1));
		string tmp="";
		tmp+=x+" "+m;
		in.push_back(tmp);
	}
	sort_xm();
	for(i=0;i<in.size();i++)
		cout<<in[i]<<endl;
	return 0;
}