#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct student{
char name[25];
int mark;
};
bool cmp(student i,student b){
int j;
if(i.mark==b.mark){
for(j=0;i.name[j]!='\0' || b.name[j]!='\0';j++){
if(i.name[j]!=b.name[j]) return i.name[j]<b.name[j];
}
}
else return i.mark>b.mark;
return true;
}
int a[15]; // the mark of each problem
int main(){
int g,n,m;
int ans; //the num of pass
int i;
string s;
while(scanf("%d",&n) && n!=0){
student stu[1005];
scanf("%d%d",&m,&g);
for(i=1;i<=m;i++) scanf("%d",&a[i]);
for(i=1;i<=n;i++){
int k; //the num of solved
int b; //the index of problem
scanf("%s",stu[i].name);
scanf("%d",&k);
stu[i].mark=0;
while(k--){
scanf("%d",&b);
stu[i].mark+=a[b];
}
}
int t;
sort(stu+1,stu+n+1,cmp);
for(i=1;stu[i].mark>=g;i++);
t=i;
ans=i-1;
printf("%d\n",ans);
for(i=1;i<t;i++){
printf("%s %d\n",stu[i].name,stu[i].mark);
}
}
return 0;
}
hdu1236
最新推荐文章于 2020-08-25 12:17:32 发布