Topic Link: Click to open the link
Idea: STL set + sort
#include <bits/stdc++.h> using namespace std;
String name[105];
int num[105];
Double aver[105];
int cnt[105];
Set<int> s;
struct node{int index,count;
Double average; Node (int a,int b,double C): Index (a), count (b), average (c) {} bool operator< (const node &B) const{if (count! = B.coun
T) {return count > b.count;
} else{return average < b.average;
}
}
};
int main () {int te,n;
CIN >> N;
for (int i = 0;i < n;i++) {s.clear ();
CIN >> Name[i] >> num[i];
for (int j = 0;j < num[i];j++) {cin >> te;
S.insert (TE);
} Cnt[i] = S.size ();
Aver[i] = (double) num[i]/cnt[i];
} vector<node> v;
for (int i = 0;i < n;i++) {V.push_back (node (i,cnt[i],aver[i]));
} sort (V.begin (), V.end ());
if (n = = 1) {cout << Name[v[0].index] << "-" << "-" <<endl;
} else if (n = = 2) {cout << Name[v[0].index] << "<< Name[v[1].index] <<"-"<< Endl; } else{COut << Name[v[0].index] << "<< Name[v[1].index] <<" "<< Name[v[2].index] << Endl;
} return 0; }