题目描述
此题较为简单,进行结构体排序即可
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct student{
string name;
int score;
};
bool com(const student& a,const student& b){
if(a.score==b.score)
return a.name<b.name;
return a.score>b.score;
}
student s[1005];
int sco[11];
int main(){
int n,m,g;
int num;
int x;
int ans;
while(cin>>n){
if(n==0)
break;
ans=0;
cin>>m>>g;
for(int i=1;i<=m;i++)
cin>>sco[i];
for(int i=0;i<n;i++){
cin>>s[i].name;
s[i].score=0;
cin>>num;
while(num--){
cin>>x;
s[i].score+=sco[x];
}
if(s[i].score>=g)
ans++;
}
sort(s,s+n,com);
cout<<ans<<endl;
for(int i=0;i<ans;i++)
cout<<s[i].name<<" "<<s[i].score<<endl;
}
}