先把做了的题的分加起来(先计算判断分数保存)
把大于等于录取分的保存(结构体保存)
结构体里的数据排序
#include<bits/stdc++.h>
using namespace std;
struct put{
char x[25];//考号
int y;//分数
}s[1005];
bool cmp(put y1,put y2){
if(y1.y==y2.y) return strcmp(y1.x,y2.x)<0;//成绩相等时比较考号,考号的升序输出 ,字符串比较函数
return y1.y>y2.y;//分数从大到小排序
}
int main(){
int n,m,p,n1,n2;
int sum=0;
int q=0;
int a[11];//记录每一题成绩
while(cin>>n&&n){//循环输入到0结束
cin>>m>>p;
// getchar();
for(int i=1;i<=m;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
s[q].y=0;
sum=0;//注意清 0
cin>>s[i].x>>n1;
for(int j=0;j<n1;j++){
cin>>n2;
sum+=a[n2];//把做题的分加起来
}
if(sum>=p){//大于等于录取分的保存起来
s[q].y=sum;
q++;
}
}
cout<<q<<endl;//先输出大于等于录取分的人数
sort(s,s+q,cmp);
for(int i=0;i<n;i++){
cout<<s[i].x<<" "<<s[i].y<<endl;
}
}
return 0;
}