2020.11.7
7-9 题目好理解,实现不好实现。看了别人的代码,用的结构体,其实我是少用了一个set。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<set>
using namespace std;
typedef long long ll;
#define MAXN 10000010
set<int>si;
struct node{
string nname;
int sum;
int num;
}f[110];
bool cmp(node a,node b){
if(a.sum==b.sum){
return a.num<b.num;
}
return a.sum>b.sum;
}
int main(){
int n,k,x,cnt=0;
string name;
cin>>n;
for(int i=0;i<n;i++){
cin>>name>>k;
si.clear();
for(int j=1;j<=k;j++){
cin>>x;
si.insert(x);
}
f[i].nname=name;
f[i].sum=si.size();
f[i].num=k;
}
sort(f,f+n,cmp);
if(n>=3){
cout<<f[0].nname<<" ";
cout<<f[1].nname<<" ";
cout<<f[2].nname<<endl;
}else if(n==0){
cout<<"- - -"<<endl;
}else if(n==1){
cout<<f[0].nname<<" - -"<<endl;
}else if(n==2){
cout<<f[0].nname<<" "<<f[1].nname<<" -"<<endl;
}
return 0;
}
浙公网安备 33010602011771号