B4094 [CSP-X2021 山东] 成绩排名

· · 题解

欢迎报名洛谷网校,期待和大家一起进步!

题目中要求的排名方法是基于比某选手成绩更高的人数来确定名次。解决这个问题,不需要排序,只需一次遍历即可得到答案。

我们假设要查询名次的选手的成绩为 q。具体来说,遍历所有选手的成绩,并统计比查询成绩 q 高的选手的数量。设这个数量为 k。由于名次是从 1 开始的,所以查询选手的名次就是 k + 1

// 设定一个计数器 cnt 用于统计比 q 分数高的选手数
int cnt = 0;
for (int i = 0; i < n; i++) {
    if (a[i] > q) {
        cnt++;
    }
}
// 最终的名次为 cnt + 1
int rank = cnt + 1;