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