[传智杯 #2 初赛] 软件工程实习

题目描述

某大学的《软件工程》必修课分为理论和实践部分。理论部分由该校教授完成授课;而实践部分是由第三方的公司主导,需要同学们在五周时间内自学 HTML、css、JavaScript、vue、Python、django 等技术,并组队完成一个真实的互联网商业应用。 参与这个课程的有 $n(0\le n \le 1000)$ 个学生,分成了不超过 $26$ 个队伍,每个队伍用 `A` 到 `Z` 来表示。每个队伍都会完成一个项目,并以队伍为单位,给所有队伍(包括自己队伍)打分,范围是 $0$ 到 $100$ 的整数。 为了平息学生对这门课产生的出多问题的不满(比如工作量太大、时间过于紧张、考核方式不公平等),老师决定使用一种“看起来”很公平的方式来决定每组队伍的项目得分: 对于某个队伍,首先计算所有队伍(包括自己)给这个队伍评分的平均值,然后剔除掉和这个平均值差别超过 $15$ 分的评分(保证不会出现所有的评分全部被剔除的情况),最后再对剩余的评分求平均值,四舍五入取整后作为这个队伍的项目得分。 对于每一个同学,我们已经得知他们的队伍代号和理论成绩(也是 $0$ 到 $100$ 分的整数)。这位同学的最后得分就是 $60\%$ 的理论成绩加上 $40\%$ 的所在队伍的项目得分,然后四舍五入取整。 现在老师想知道所有同学的分数排行。请按最后得分从高到低的顺序,输出每位同学的得分和他所在的队伍。

输入输出格式

输入格式


第一行两个整数 $n$ 和 $k$,分别表示学生数和队伍数。 接下来 $n$ 行,每行一个整数 $s_i$ 和一个大写字母 $c_i$,表示第 $i$ 个选手的理论分数和队伍编号。保证队伍编号范围是从 `A` 开始后连续 $k$ 个字母中的一个。 接下来 $k$ 行,每行 $k$ 个整数。其中第 $i$ 行第 $j$ 列的整数 $a_{i,j}$ 表示第 $i$ 个队伍给第 $j$ 个队伍的评分,当 $i=j$ 时,就是自评。

输出格式


输出 $n$ 行表示答案,得分高的同学优先输出,得分相同时队伍编号较小的同学优先输出。对于每一行,先输出这位同学成绩,然后输出代表他的队伍编号的大写英文字母。

输入输出样例

输入样例 #1

6 3
70 A
80 A
65 B
95 B
85 C
90 C
70 90 100
95 88 85
30 47 100

输出样例 #1

93 B
92 C
89 C
76 A
75 B
70 A

说明

A 组收到的分数分别是 $70,95,30$,其平均分为 $65$,则 $95,30$ 被作为无效成绩剔除,因此 A 组的项目得分是 $70$ 分。 B 组收到的分数分别是 $90,88,47$,其平均分为 $75$,则 $47$ 被作为无效成绩剔除,因此 B 组的项目得分是 $89$ 分。 C 组收到的分数分别是 $100,85,100$,其平均分为 $95$,没有打分被剔除,因此 C 组的项目得分是 $95$ 分。