AlgoMooc
← 返回题库

P2556. 开源项目热榜

简单通过率 62% · 提交 171 · 通过 106
排序模拟字符串

小慕最近在参与一个开源社区的运营工作,社区希望整理一份近期热度较高的开源项目榜单,推荐给其他开发者。 对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提 issue、提交合并请求(MR)等操作。数据库中已统计了每个项目在这五个维度上的数量,项目的热度根据这五个维度的来计算。 榜单按照从高到低排序,如果热度值相同,则按照项目名称转换为全小写字母后的进行排序。

提示:带虚线的词点一下有通俗解释。

输入描述

第一行输入为 N,表示开源项目的个数,0 < N < 100。 第二行输入为权重值列表,一共 5 个整型值,分别对应关注、收藏、fork、issue、MR 的权重,权重取值 0 < M ≤ 50。 第三行开始接下来的 N 行为开源项目的统计维度,每一行的格式为: name nr_watch nr_star nr_fork nr_issue nr_mr 其中 name 为开源项目的名字,由英文字母组成,长度 ≤50,其余 5 个整型值分别为该开源项目关注、收藏、fork、issue、MR 的数量,数量取值 0 < nr ≤ 1000。

输出描述

按照热度降序,输出开源项目的名字,对于热度值相等的,按照项目名字转换为全小写字母后的字典序排序

示例

示例 1

输入

4
8 6 2 8 6
camila 66 70 46 158 80
victoria 94 76 86 189 211
anthony 29 17 83 21 48
emily 53 97 1 19 218

输出

victoria
camila
emily
anthony

说明:排序热度值计算: camila: 66*8 + 70*6 + 46*2 + 158*8 + 80*6 = 2784 victoria: 94*8 + 76*6 + 86*2 + 189*8 + 211*6 = 4158 anthony: 29*8 + 17*6 + 83*2 + 21*8 + 48*6 = 956 emily: 53*8 + 97*6 + 1*2 + 19*8 + 218*6 = 2468 根据热度值降序,得到结果。

示例 2

输入

5
5 6 6 1 2
camila 13 88 46 26 169
grace 64 38 87 23 103
lucas 91 79 98 154 79
leo 29 27 36 43 178
ava 29 27 36 43 178

输出

lucas
grace
camila
ava
leo

说明:排序热度值计算: camila: 13*5 + 88*6 + 46*6 + 26*1 + 169*2 = 1233 grace: 64*5 + 38*6 + 87*6 + 23*1 + 103*2 = 1299 lucas: 91*5 + 79*6 + 98*6 + 154*1 + 79*2 = 1829 leo: 29*5 + 27*6 + 36*6 + 43*1 + 178*2 = 922 ava: 29*5 + 27*6 + 36*6 + 43*1 + 178*2 = 922 根据热度值降序,对于 leo 和 ava,热度值相等,按照字典序,ava 排在 leo 前面,得到结果。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「开源项目热榜」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。