3CS003 60CS001 37CS004 3701CS000000000000000002 20
#include <iostream>#include <string>#include <vector>#include <algorithm>//#include <fstream>using namespace std;const int MAX = 15;struct Student{string number;int m;int questionNumber[MAX];int score;};bool Comp(const Student &s1, const Student &s2){if (s1.score != s2.score)return s1.score > s2.score;else return s1.number < s2.number;}int main(){//ifstream cin("1014.txt");int M, N, G;int n;int value[MAX];vector<Student> v;Student student;while (cin >> N >> M >> G && M){n = 0;v.clear();//输入数据for (int i = 1; i <= M; ++i){cin >> value[i];}for (int i = 0; i < N; ++i){student.score = 0;cin >> student.number >> student.m;for (int k = 1; k <= student.m; ++k)cin >> student.questionNumber[k];for (int k = 1; k <= student.m; ++k){student.score += value[student.questionNumber[k]];}v.push_back(student);}//统计不低于分数线的人数for (auto it = v.begin(); it != v.end(); ++it){if ((*it).score >= G)++n;}sort(v.begin(), v.end(), Comp);//输出cout << n << endl;for (auto it = v.begin(); it != v.end(); ++it){if ((*it).score >= G){cout << (*it).number << " " << (*it).score << endl;}}}return 0;}