2016-2017 CT S03E05: Codeforces Trainings Season 3 Episode 5 (2016 Stanford Local Programming Contest, Extended) I
链接:http://codeforces.com/gym/101116
题意:选六个数,必须出现次数最多,且数字最小,如果出现7优先加入7
解法:排序,出现7优先加入7,最后再将6个数排序
#include<bits/stdc++.h>
using namespace std;
struct P
{
int num,pos,M;
}He[1000];
bool cmd(P a,P b)
{
if(a.pos==b.pos)
{
return a.M<b.M;
}
else
{
return a.pos>b.pos;
}
}
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
for(int i=0; i<51; i++)
{
if(i!=7)
{
He[i].num=i;
He[i].pos=0;
He[i].M=i;
}
else
{
He[i].num=i;
He[i].pos=0;
He[i].M=0;
}
}
while(n--)
{
int a;
for(int i=0;i<6;i++)
{
cin>>a;
He[a].pos++;
}
}
int num[10];
sort(He,He+51,cmd);
for(int i=0;i<6;i++)
{
num[i]=He[i].num;
}
sort(num,num+6);
for(int i=0;i<6;i++)
{
cout<<num[i]<<" ";
}
cout<<endl;
}
return 0;
}

浙公网安备 33010602011771号