测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41120. 出书最多

填空题 较难

题目描述

出书最多

题目描述

假定图书馆新进了m(10 ≤ m ≤ 999)本图书,它们都是由n(1 ≤ n ≤ 26)个作者独立或相互合作编著的。假设m本图书编号为整数(1到999),作者的姓名为字母('A'到'Z'),请根据图书作者列表找出参与编著图书最多的作者和他的图书列表。

输入格式

第一行为所进图书数量m,其余m行,每行是一本图书的信息,其中第一个整数为图书编号,接着一个空格之后是一个由大写英文字母组成的没有重复字符的字符串,每个字母代表一个作者。输入数据保证仅有一个作者出书最多。

输出格式

输出有多行:

第一行为出书最多的作者字母;

第二行为作者出书的数量;

其余各行为作者参与编著的图书编号(按输入顺序输出)。

样例输入

11
307 F
895 H
410 GPKCV
567 SPIM
822 YSHDLPM
834 BXPRD
872 LJU
791 BPJWIA
580 AGMVY
619 NAFL
233 PDJWXK

样例输出

P
6
410
567
822
834
791
233

参考答案

#include<iostream> #include<cstring> using namespace std; char c; string str; int no,len,m,a[10000][100],ch[27]; int main(){ int max=0; scanf("%d",&m); for(int i=0;i<m;i++) { cin>>no>>str; len=str.size(); for(int j=0;j<len;j++) { a[str[j]-'A'][++ch[str[j]-'A']]=no; } } for(int i=0;i<26;i++) { if(ch[i]>max) { max=ch[i]; c=char(i+'A'); } } cout<<c<<endl; cout<<max<<endl; for(int i=1;i<=max;i++) { cout<<a[c-'A'][i]<<endl; } return 0; }
上一题 下一题