```clike ```clike /* // // Created by HMN on 2020/1/27. // 7-5 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。 输入格式: 输入首先给出正整数N(≤105 ),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。 输出格式: 在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。 输入样例: 4 13005711862 13588625832 13505711862 13088625832 13588625832 18087925832 15005713862 13588625832 输出样例: 13588625832 3 作者: DS课程组 单位: 浙江大学 时间限制: 400 ms 内存限制: 64 MB */ #include <iostream> #include <sstream> #include <map> using namespace std; string i2s(int& a){ string string1; stringstream stringstream1; stringstream1<<a; stringstream1>>string1; return string1; } int main(int argc, char** argv){ int n; cin>>n; string tel1,tel2; map<string,int> mp; for (int i = 0; i < n; ++i) { cin>>tel1>>tel2; if(mp.count(tel1)==0) mp[tel1]=1; else mp[tel1]++; if(mp.count(tel2)==0) mp[tel2]=1; else mp[tel2]++; } int max=0; int cnt=0; string crazy_people; for(auto it=mp.begin();it!=mp.end();it++){ if(it->second>max) max=it->second,crazy_people=it->first,cnt=1; else if(it->second==max) cnt++; } cout<<crazy_people<<' '<<mp[crazy_people]<<(cnt==1?"":" "+i2s(cnt)); return 0; }