小猴编程周赛C++ | 2023年春第11周T3评分

学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!

附上汇总贴:小猴编程C++ | 汇总-CSDN博客


【题目描述】

小猴在观看跳水比赛。

有 n 名选手来参加跳水比赛,有 m 名评委。在每位选手跳水之后,每位评委会给出他的分数。为了保证尽量公正客观,每位选手的得分是所有评委给出的分数中去掉最大值和最小值(如果有多个最大值/最小值,只去掉一个)之后,剩下的分数的平均值。

最后得分最大的选手获得第一名,得分第二大的选手获得第二名,以此类推。但是可能会出现同分的情况,在这种情况下,小猴会默认编号较小的选手排名更靠前。即,如果 3 号选手和 5 号选手的得分都是 70,那么小猴会认为 3 号选手的排名比 5 号选手更靠前。

现在小猴已经知道了所有选手得到所有评委的分数,他想让你帮他算出来选手的排名表,即对于 1≤in,算出排名第 i 的选手的编号是什么。

【输入】

第一行两个整数 n,m,分别表示选手个数和评委个数。

接下来 n 行每行 m 个整数,第 i 行第 j 个整数 ai,j 表示在第 i 个选手跳水之后,第 j 个评委给出的分数,每个选手的编号按照输入顺序编号为 1∼n

【输出】

输出一行 n 个整数,第 i 个整数表示排名为 i 的选手的编号。

【输入样例】

4 4
4 70 69 34
18 43 85 71
100 50 69 80
67 82 90 43

【输出样例】

3 4 2 1

【代码详解】

#include <bits/stdc++.h>
using namespace std;
struct Stu {
    int s, id;
}a[2010];
bool cmp(Stu x, Stu y)
{
    if (x.s != y.s) return x.s>y.s;
    return x.id<y.id;
}
int main()
{
    int n, m;
    cin >> n >> m;
    for (int i=1; i<=n; i++) {
        a[i].id = i;
        int sum=0, maxn=0, minn=100;
        for (int j=1; j<=m; j++) {
            int score;
            cin >> score;
            maxn = max(maxn, score);
            minn = min(minn, score);
            sum += score;
        }
        a[i].s = sum - maxn - minn;
    }
    sort(a+1, a+n+1, cmp);
    for (int i=1; i<=n; i++) {
        cout << a[i].id << " ";
    }
    return 0;
}

【运行结果】

4 4
4 70 69 34
18 43 85 71
100 50 69 80
67 82 90 43
3 4 2 1
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值