A - 排名 HDU - 1236
- cmp 函数写法
- strcmp 返回值
#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int N, M, G, value[15];
struct node {
char id[22];
int rt;
int sc;
}stu[1005];
bool cmp(node s1, node s2){
if(s1.sc == s2.sc) return strcmp(s1.id, s2.id) < 0 ? 1 : 0;
else return s1.sc > s2.sc;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("test.in", "r", stdin);
#endif
while(cin >> N) {
if(N == 0) break;
memset(value, 0, sizeof(value));
cin >> M >> G;
int end = 0;
for(int i = 1; i <= M; i++) {
cin >> value[i];
}
for(int i = 1; i <= N; i++){
cin >> stu[i].id;
cin >> stu[i].rt;
stu[i].sc = 0;
int temp;
for(int j = 1; j <= stu[i].rt; j++) {
cin >> temp;
stu[i].sc += value[temp];
}
}
sort(stu+1, stu+N+1, cmp);
for(int i = 1; i <= N; i++){
if(stu[i].sc >= G) {
end = i;
continue;
}
else break;
}
cout << end << endl;
for(int i = 1; i <= end; i++) cout << stu[i].id << " " << stu[i].sc << endl;
}
return 0;
}