4321: 【基础】整理抽屉(1760)
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:8
解决:6
题目描述
期末考试即将来临,小T由于同时肩负了学习、竞赛、班团活动等多方面的任务,一直没有时间好好整理他的课桌抽屉,为了更好地复习,小T首先要把课桌抽屉里的书分类整理好。
小T的抽屉里堆着 本书,每本书的封面上都印有学科名称,学科名称用一个字符串表示,如语文学科的书封面上都印有“chinese”。现在,你的任务是帮助小T找出哪个学科的书最多?
输入
第一行包含一个自然数 ()表示抽屉中书的总数。
接下来 行每行包含一本书的学科名称,学科名称是一个长度不超过 的由小写英文字母组成的字符串。
输出
仅有一行包含一个字符串,表示最多的那种书的学科名称。
数据保证答案一定是唯一的。
样例输入 复制
5
english
chinese
physics
chinese
chinese
样例输出 复制
chinese
提示
【样例解释】
小T课桌抽屉里共有 本书,其中有 本是语文学科的,英语学科和物理学科各有 本,所以最多的是语文学科的书,应输出“chinese”。
【数据范围】
的数据满足:,学科名称为长度不超过 的仅包含英文小写字母的字符串;
的数据满足:,学科名称为长度不超过 的仅包含英文小写字母的字符串;
#include<bits/stdc++.h>
using namespace std;
struct node{
string name;
int count;
};
bool cmp(node x,node y) {
if(x.count!=y.count) return x.count>y.count;
else return x.name>y.name;
}
node a[1010];
map<string,int> m;
int n;
int main() {
cin>>n;
string t;
for(int i=1;i<=n;i++) {
cin>>t;
m[t]++;
}
map<string,int>::iterator it;
int k=1;
for(it=m.begin();it!=m.end();it++){
a[k].name=it->first;
a[k].count=it->second;
k++;
}
sort(a+1,a+k,cmp);
cout<<a[1].name<<endl;
return 0;
}