查看原题目请点这里
注意的地方:第三个测试点容易出错,题目说的是4位数字,所以输出的时候就必须是四位,即读入的是0721,不注意的话,会直接输出721,这样测试点就不通过。

#include<cstdio>
#include<cstring>
const int maxn=10005;
int main(){
    int N,M,num,k;
    char name[5];
    scanf("%d%d",&N,&M);
    int item[maxn];
    memset(item,0,sizeof(item));
    for(int i=0;i<M;i++){
        scanf("%d",&num);
        item[num]=1;
    }
    int cntp=0,cntt=0;
    for(int i=0;i<N;i++){
        scanf("%s %d",name,&k);
        int tag=1;
        for(int j=0;j<k;j++){
            scanf("%d",&num);
            if(item[num]==1) {
                cntt++;
                if(tag==1){
                    printf("%s:",name);
                    tag=2;
                }
                printf(" %04d",num);
            }   
        }
        if(tag==2) {
            cntp++; 
            printf("\n");
        }
    }
    printf("%d %d",cntp,cntt);

    return 0;
}