解决部分用例报错(根本原因是sort的不稳定排序)

成绩排序

https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1

#include <asm-generic/errno-base.h>
#include <iostream>
#include <algorithm>//sort的头文件
using namespace std;
struct Student {
    string name;
    int score;
    int rank;//rank是用来表示输入顺序的变量
};
bool compare0(Student x, Student y) {
    if (x.score == y.score) {
        return x.rank < y.rank;//返回输入顺序用以解决题设“相同成绩都按先录入排列在前的规则处理。”
    } else {
        return x.score > y.score;
    }
}
bool compare1(Student x, Student y) {
    if (x.score == y.score) {
        return x.rank < y.rank;//同上
    } else {
        return x.score < y.score;
    }
}
int main() {
    int n, f;
    Student arr[1000];//变量太小好像会溢出,这里多分配一点
    while (cin >> n >> f) {
        for (int i = 0; i < n; ++i) {
            cin >> arr[i].name >> arr[i].score;
            arr[i].rank = i;//把输入顺序录入rank
        }
        if (f == 0) {
            sort(arr, arr + n, compare0);
        } else {
            sort(arr, arr + n, compare1);
        }
        for (int j = 0; j < n; ++j) {
            std::cout << arr[j].name << " " << arr[j].score << std::endl;
        }
    }

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-20 18:18
是不是意味着秋招就完蛋了
花不开柳成荫:如果你是Java,是的
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-23 17:32
那如果是字节外包呢?据我所知工牌无区别&nbsp;可以晒出去装X的那种
秋盈丶:残酷的是,都一样,管你是不是字节,不过我是很反对这种的,本是同根生,市场行情决定了用工的模式会有很多外包,分层只是单纯为了筛选
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务