注解
1、结构体排序。
2、注意string类型在结构体排序时也只需要用 < 或 > 即可进行比较,升序或降序。
代码
#include <iostream>
#include <algorithm>
using namespace std;
struct Stu {
string id;
int sum;
};
int compare(Stu s1, Stu s2) {
if(s1.sum==s2.sum) {
return s1.id<s2.id;
} else {
return s1.sum>s2.sum;
}
}
int main() {
int N;
cin>>N;
while(N) {
Stu stu[N];
int M, G;
cin>>M>>G;
int score[M];
for(int i=0; i<M; i++) {
cin>>score[i];
}
int passNum = 0;
for(int i=0; i<N; i++) {
cin>>stu[i].id;
stu[i].sum = 0;
int corrNum;
cin>>corrNum;
for(int j=0; j<corrNum; j++) {
int tmp;
cin>>tmp;
stu[i].sum += score[tmp-1];
}
if(stu[i].sum>=G) {
passNum++;
}
}
sort(stu, stu+N, compare);
cout<<passNum<<endl;
for(int i=0; i<passNum; i++) {
cout<<stu[i].id<<" "<<stu[i].sum<<endl;
}
cin>>N;
}
return 0;
}