题目链接
解题思路:
如果有并列,则输出标签出现次数平均值最小的那个
这句话没看懂。。。看别人的题解才知道原来是 k
代码如下:
#include<iostream>
#include<algorithm>
#include<set>
#include<map>
using namespace std;
string a;
set<int> s;
struct node
{
int x;
int k;
string c;
}b[110];
bool cmp(node a,node b)
{
if(a.x==b.x)
{
return a.k<b.k;
}
return a.x>b.x;
}
int main()
{
int n;
int i,j;
int k,x;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a;
cin>>k;
b[i].k=k;
b[i].c=a;
s.clear();
while(k--)
{
cin>>x;
s.insert(x);
}
b[i].x=s.size();
//cout<<s.size()<<endl;
}
sort(b,b+n,cmp);
if(n<3)
{
for(i=0;i<n;i++)
cout<<b[i].c<<" ";
for(i=0;i<2-n;i++)
cout<<"- ";
cout<<"-"<<endl;
}
else
{
for(i=0;i<2;i++)
{
cout<<b[i].c<<" ";
}
cout<<b[2].c<<endl;
}
return 0;
}