这个题用sort和unique貌似会超时?所以直接使用map储存数据并使用迭代器进行访问,在输入数据的同时直接得到最大票数,然后遍历map记录最大票数的数量,并判定是否所有票数都为最大票数。
#include<map>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int t,n,bianhao;
cin>>t;
while(t--){
int max1=0,geshu=1,sum=0;
cin>>n;
map<int, int>a;
for(int i=0;i<n;i++){
cin>>bianhao;
a[bianhao]++;
max1=max(max1,a[bianhao]);//记录最大票数
}
map<int,int>::iterator it;
for(it=a.begin();it!=a.end();++it){
if(it->second!=max1) geshu=0;//判断是否有票数跟最大票数不同
else sum++;
}
if(geshu) cout<<-1<<endl;
else{
cout<<sum<<endl;
for(it=a.begin();it!=a.end();++it)
if(it->second==max1)
cout<<it->first<<' ';
cout<<endl;
}
}
return 0;
}