链接: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; }