题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/7a2f7d304d9e43b1bb2a6e72ed65bf51

#include<iostream>
#include<queue>
#include<string>
using namespace std;

struct stu{
    string name;
    int age;
    int grade;
    stu(string s,int a,int g):name(s),age(a),grade(g){}
    bool operator<(const stu& student)const{
        if(grade==student.grade && name==student.name)
            return age>student.age;
        else if(grade==student.grade)
            return name>student.name;
        return grade>student.grade;
    }
};

int main(){
    int n;
    while(cin>>n){
        string name;
        int age,grade;
        priority_queue<stu> pq;
        for(int i=0;i<n;i++){
            cin>>name>>age>>grade;
            pq.push(stu(name,age,grade));
        }
        while(pq.size()){
            cout<<pq.top().name<<" "<<pq.top().age<<" "<<pq.top().grade<<endl;
            pq.pop();
        }
    }
    return 0;
}

全部评论

相关推荐

浩浩没烦恼:一二面加起来才一个小时? 我一面就一个小时多了
点赞 评论 收藏
分享
11-23 17:35
已编辑
济宁学院 Java
不想做程序员:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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