自定义排序顺序/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;
}
}
腾讯云智研发成长空间 260人发布