电话聊天狂人

简介: 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。

输入格式:
输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。

输出格式:
在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。

输入样例:

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例:

13588625832 3
#include<bits/stdc++.h>
#include<string>
#include<map> 
using namespace std;
map<string,int>p;
struct nu
{
    string num;//存电话号码
    int cnt;
}ang[1000010];
bool cmp_cnt(nu x,nu y)
{
    return x.cnt>y.cnt;//按照打电话次数排序
}
bool cmp_num(nu x,nu y)
{
    return x.num<y.num;//按照电话号码的大小排序
}
int main()
{
    string str,ch;
    int n,k=0,amax=0,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        cin>>str>>ch;//输入两串电话号码
        if(p[str]==0)
        ang[k++].num=str;
                            //分别存入
        if(p[ch]==0)
        ang[k++].num=ch;
        
        p[str]++;//用map记录通话次数
        p[ch]++;
    }
    for(i=0;i<k;i++)
    {
        ang[i].cnt=p[ang[i].num];//提取通话次数
    }
    sort(ang,ang+k,cmp_cnt);
    amax=ang[0].cnt;
    int t=1;
    for(i=1;;i++)//寻找并列
    {
        if(amax==ang[i].cnt)
        t++;
        else
        break;
    }
    sort(ang,ang+t,cmp_num);
    
    cout<<ang[0].num<<" "<<ang[0].cnt;
    if(t>1)
    cout<<" "<<t;
    return 0;
}
目录
相关文章
|
7月前
手机网页打电话
手机网页打电话
177 1
使用chatGPT自动回复抖音评论
使用chatGPT自动回复抖音评论
210 0
刷题之单生狗和电话聊天狂人
刷题之单生狗和电话聊天狂人
105 0
(字符串hash)(map)电话聊天狂人
(字符串hash)(map)电话聊天狂人
80 0
|
机器人
话痨小机器人快陪我聊天
话痨小机器人快陪我聊天
130 0
话痨小机器人快陪我聊天
|
开发工具 数据安全/隐私保护 开发者
简单的环信单聊(用于商城聊天)
简单的环信单聊(用于商城聊天)
244 0
简单的环信单聊(用于商城聊天)
|
Web App开发 机器人 Windows
一个Boss直聘机器人, 自动回复发简历
goBoss 基佬github地址 这是基于go语言编写的一款boss直聘机器人软件(牛人版)。附上Python版本, 无需配置Go环境, 我会提供windows和macos的可执行程序。不喜勿喷O(∩_∩)O~ 闪光点 自动回复boss消息 回复消息有3种类型。