菜鸡的并不简洁的代码,自定义了比较函数,利用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;
}