#pragma warning(disable:4996);
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct stu {
char name[25];
int point;
bool operator<(const stu& a)const {
if (point != a.point) return point > a.point;
else return strcmp(name, a.name) < 0;
}//按分数降序,同分数准考证升序排名
}buf[1005];
int main()
{
int n;
while (scanf("%d", &n) != EOF) {
if (n == 0) break;
int m, g;
scanf("%d%d", &m, &g);
int tp[11] = { 0 };
for (int i = 1;i <= m;i++) {
scanf("%d", &tp[i]);
}//记录每个题的分数
for (int i = 0;i < n;i++) {
getchar();//吸收回车
scanf("%s", buf[i].name);
int cnt;
scanf("%d", &cnt);
for (int j = 0;j < cnt;j++) {//找到每个人作对的题号对应的分数
int num;
scanf("%d", &num);
for (int t = 1;t <= m;t++) {
if (num == t) buf[i].point += tp[t];
}
}
}
sort(buf, buf + n);
int tnum = 0;
for (int i = 0;i < n;i++)
if (buf[i].point >= g) tnum++;//统计过线的人数
printf("%d\n", tnum);
for (int i = 0;i < n;i++) {
if (buf[i].point >= g)
printf("%s %d\n", buf[i].name, buf[i].point);
}
}
return 0;
}
问题 I: 排名
最新推荐文章于 2021-03-26 19:22:56 发布