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 - -
",A[0].name);
    else if(n==2)
        printf("%s %s -
",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("
");
    }

}
原文地址:https://www.cnblogs.com/nr1999/p/8625951.html