转自点击打开链接
#include<iostream>
#include<map>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
struct people
{
string name;
int k,num;
}s[100];
bool cmp(people a,people b)
{
if(a.num==b.num) return a.k*1.0/a.num<b.k*1.0/b.num;
return a.num>b.num;
}
int main()
{
int n,d;
map<int,int>p;
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i].name>>s[i].k;
for(int j=0;j<s[i].k;j++){
cin>>d;
if(!(p[d]++)) s[i].num++;
}
p.clear();
}
sort(s,s+n,cmp);
for(int i=0;i<3;i++){
if(i<n){
if(i) cout<<' '<<s[i].name;
else cout<<s[i].name;
}else{
if(i) cout<<" -";
else cout<<'-';
}
}
}