AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P2566. 射击比赛

中等通过率 50% · 提交 516 · 通过 256
哈希表排序模拟

小慕正在整理一份射击比赛的成绩单。成绩单中包含多个选手的若干次射击分数,现在需要根据每个选手最高的三个分数之和,对他们进行,并输出排名后的 序列。具体要求如下: 1. 每位选手可以有多次射击成绩,且成绩的出现顺序不固定。 2. 如果某位选手的成绩数量少于三个,则该选手的所有成绩视为无效,不参与排名。 3. 如果多位选手的相等,则这些选手按照其 ID 降序排列。

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

输入描述

输入第一行:一个整数 N 表示该场比赛总共进行了N次射击 产生 N 个成绩分数 2 <= N <= 100 输入第二行 一个长度为 N 的整数序列 表示参与本次射击的选手 Id 0 <= ID <= 99 输入第三行是长度为 N 的整数序列 表示参与每次射击的选手对应的成绩 0 <= 成绩 <= 100

输出描述

符合题设条件的降序排名后的选手 ID 序列

示例

示例 1

输入

13
3,3,7,4,4,4,4,7,7,3,5,5,5
53,80,68,24,39,76,66,16,100,55,53,80,55

输出

5,3,7,4

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

看不懂题目?点开图解
双机位C-射击比赛 核心流程读取N及ID、成绩按选手ID分组收集所有成绩筛选成绩≥3个的选手取最高三个分数求和按分数和降序分数相同按ID降序输出排序后的ID忽略成绩不足3个的选手示例:选手3成绩:53,80,68,55 → 取80+68+55=203
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「射击比赛」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。