题解 | #成绩排序#

成绩排序

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

#include <algorithm>
#include <cstdint>
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;

struct Student{
    char name[50];
    int grade;
    int seq;
};
//从高到底
bool Comp1(Student a, Student b){
    if (a.grade == b.grade && a.seq < b.seq) {
        return true;
    }else {
        return a.grade > b.grade;
    }
};
//从底到高
bool Comp2(Student a, Student b){
    if (a.grade == b.grade && a.seq < b.seq) {
        return true;
    }else {
        return a.grade < b.grade;
    }
};

int main() {
    int n;
    while (scanf("%d",&n) != EOF) {
        int flag;
        Student stu[n];
        scanf("%d",&flag);
        for (int i = 0; i < n ; ++i) {
            scanf("%s %d",&stu[i].name,&stu[i].grade);
            stu[i].seq = i;
        }
        if (0 == flag) {
            sort(stu, stu+n, Comp1);
        }else {
            sort(stu, stu+n, Comp2);
        }
        for (int j = 0; j < n; ++j) {
            printf("%s %d\n",stu[j].name,stu[j].grade);
        }
    }

}

全部评论

相关推荐

03-29 14:19
门头沟学院 Java
你背过凌晨4点的八股文么:加油同学,人生的容错率很高,只是一个暑期罢了,后面还有很多机会!
点赞 评论 收藏
分享
03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务