自定义排序顺序/C++

成绩排序

https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include <algorithm>
#include <unordered_map>
#include <iomanip>
#include <math.h>

using namespace std;

struct myPair{
    string name;
    int grade;
    int id;
};


int main()
{
    int n;
    int flag;
    while(cin>>n>>flag){
        vector<myPair> vec(n);
        for(int i = 0; i < n; i++){
            cin>>vec[i].name>>vec[i].grade;
            vec[i].id = i;
        }
        if(flag == 0)  //降序
            sort(vec.begin(), vec.end(),[](myPair &a, myPair &b){
                if(a.grade == b.grade)
                    return a.id < b.id;
                return a.grade > b.grade;
            });
        else
            sort(vec.begin(), vec.end(),[](myPair &a, myPair &b){
                if(a.grade == b.grade)
                    return a.id < b.id;
                return a.grade < b.grade;
            });

        for(int i = 0; i < n; i++)
            cout<<vec[i].name<<" "<<vec[i].grade<<endl;

    }
}

全部评论

相关推荐

04-12 13:42
江南大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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