L2-021 点赞狂魔
作者:
lvjj
,
2024-04-12 22:16:23
,
所有人可见
,
阅读 5
//标签出现次数平均值最小的那个
//这句话什么意思?
//答:指的k最小,模拟一下这题给的样例就知道了
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
struct People{
string name1;
int all_num;//标签出现数量
int effective_num;//不重复的数量
}p[N];
bool cmp(const People& p1,const People& p2){
if(p1.effective_num!=p2.effective_num) return p1.effective_num>p2.effective_num;
else return p1.all_num<p2.all_num;
}
int main(){
int n;
cin>>n;
string name;
int tip_num;
int tip;
set<int> se;
for(int i=0;i<n;i++){
se.clear();
cin>>name;
cin>>tip_num;
p[i].name1 = name;
p[i].all_num = tip_num;
for(int j=0;j<tip_num;j++){
cin>>tip;
se.insert(tip);
}
p[i].effective_num = se.size();
}
sort(p,p+n,cmp);
for(int i=0;i<3;i++){
if(i!=2)cout<<p[i].name1<<' ';
else cout<<p[i].name1;
if(n==1)break;
if(n==2&&i==1)break;
}
if(n==1)cout<<"- -";
if(n==2)cout<<"-";
cout<<endl;
return 0;
}