转自点击打开链接

#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<<'-';
    }
    }
}