L2-021 点赞狂魔
会set的基础用法就可以A了,虽然是L2题,但是不难,代码如下,很好理解,set在这里不解释了自己去网上查一下就明白了:
#include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #include<ctype.h> #include<map> #include<set> #include<algorithm> #include<stdlib.h> #include<queue> #include<stack> using namespace std; struct DD { char name[10]; int num; int cc; int zz; }A[1000005]; int cmp(DD a,DD b) { if(a.cc==b.cc) return a.zz<b.zz; return a.cc>b.cc; } set<int >s; int main() { int i,j,k,n,kk; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s %d",A[i].name,&k); s.clear(); for(j=0;j<k;j++) { scanf("%d",&kk); s.insert(kk); } A[i].cc=s.size(); A[i].zz=k; } sort(A,A+n,cmp); if(n==1) printf("%s - -\n",A[0].name); else if(n==2) printf("%s %s -\n",A[0].name,A[1].name); else { for(i=0;i<3;i++) { if(i==0) printf("%s",A[i].name); else printf(" %s",A[i].name); } printf("\n"); } }