#include<stdio.h>
struct node{
int grade,sum,right;
char c[6];
}Node[110];
int wrong[110]={0};
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
scanf("%d%d%d",&Node[i].grade,&Node[i].sum,&Node[i].right);
for(int j=0;j<Node[i].right;j++){
scanf(" %c",&Node[i].c[j]);
}
}
for(int i=0;i<n;i++){//重点
int k,ans=0;
char d[6];
scanf("\n");
for(int j=0;j<m;j++){
if(j!=0) scanf(" ");
scanf("(%d",&k);
for(int l=0;l<k;l++){
scanf(" %c",&d[l]);
}
scanf(")");
int flag=1;
if(k!=Node[j].right) flag=0;
else{
for(int p=0;p<k;p++){
if(Node[j].c[p]!=d[p]) flag=0;
}
}
if(flag==1) ans+=Node[j].grade;
else{
wrong[j]++;
}
}
printf("%d\n",ans);
}
int Max=-1,k=0,aa[m];
for(int i=0;i<m;i++){
if(wrong[i]>Max){
Max=wrong[i];
}
}
for(int i=0;i<m;i++){
if(wrong[i]==Max){
Max=wrong[i];
aa[k++]=i;
}
}
if(Max==0) printf("Too simple\n");
else{
printf("%d ",Max);
for(int i=0;i<k;i++){
printf("%d",aa[i]+1);
if(i!=k-1) printf(" ");
}
}
return 0;
}
第一次,独立完成,40min
重点在于数据的输入