题目1014:排名
#include <iostream>
#include <malloc.h>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef struct S S;
struct S{
char sno[21];
int score;
bool operator <(const S &s)const{
if(score!=s.score)return score>s.score;
else return strcmp(sno,s.sno)<0;
}
};
S *s;
int main()
{
int n,m,g;
while(~scanf("%d %d %d",&n,&m,&g)&&n!=0){
int total=0,ans=0,count=0;
int *a=(int *)malloc(sizeof(int)*(m+1));
s=(S *)malloc(sizeof(S)*(n+1));
//memset(s,0,sizeof(S)*(n+1));
for(int i=0;i<m;i++)scanf("%d",&a[i]);
for(int i=0;i<n;i++){
scanf("%s %d",s[i].sno,&total);
s[i].score=0;
for(int j=0;j<total;j++){
scanf("%d",&ans);
s[i].score+=a[ans-1];
}
}
sort(s,s+n);
for(int i=0;i<n;i++){
if(s[i].score<g){count=i;break;}
}
cout<<count<<endl;
for(int i=0;i<count;i++)
printf("%s %d\n",s[i].sno,s[i].score);
free(a);free(s);
}
return 0;
}
/**************************************************************
Problem: 1014
User: 爱理momoko
Language: C++
Result: Accepted
Time:70 ms
Memory:1524 kb
****************************************************************/