//使用两个map,map<string,int>储存次数,map<int,string>储存顺序 #include<iostream> #include<map> #include<string> using namespace std; string itos(int x) { string str="",str0=" "; while(x!=0) { str0[0]=x%10+48; str=str0+str; x=x/10; } return str; } int main() { map<string,int> map_s; map<int,string> map_n; int x,n=0; string str; while(cin>>str>>x) { for(int i=0;i<str.size();) { if(str[i]!='\\') { i++; } else { str.erase(0,i+1); i=0; } } if(str.size()>16) { str.erase(0,str.size()-16); } str=str+" "+itos(x); if(!map_s[str]) { map_s[str]=1; n++; map_n[n]=str; } else { map_s[str]++; } } int t=1; if(map_n.size()>8) { t=map_n.size()-7; } for(int i=t;i<=map_n.size();i++) { cout<<map_n[i]<<" "<<map_s[map_n[i]]<<endl; } return 0; }