#include <stdio.h> #include <string.h> typedef struct stu{ char id[21]; int grade; }stu; int cmp(const void *a,const void *b) { if((*(stu *)b).grade!=(*(stu *)a).grade) return (*(stu *)b).grade-(*(stu *)a).grade; else return (*(stu *)a).id[strlen((*(stu *)a).id)-1]-(*(stu *)b).id[strlen((*(stu *)b).id)-1]; } int main() { int n,m,g,i,j,k,len,c; while(scanf("%d%d%d",&n,&m,&g)!=EOF&&n!=0) { stu s[n]; int a[m]; for(i=0;i<m;i++) scanf("%d",&a[i]); for(i=0,c=0;i<n;i++) { s[i].grade=0; scanf("%s %d",&s[i].id,&len); for(j=0;j<len;j++) { scanf("%d",&k); s[i].grade+=a[k-1]; } if(s[i].grade>=g) c++; } qsort(s,n,sizeof(s[0]),cmp); printf("%d\n",c); for(i=0;i<c;i++) printf("%s %d\n",s[i].id,s[i].grade); } return 0; }
c(语言实现•̀ᴗ•́)و