题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
#include <iostream> using namespace std; #include<vector> #include<bits/stdc++.h> #include<algorithm> class MyCompare1 { //stable_sort的仿生函数 public: bool operator()(pair<string, int> p1, pair<string, int> p2) { //函数对象根据stable_sort函数的对象来看,每一个比较的是一个pair<string,int>类型的值,参数为这。 return (p1.second) > (p2.second); } }; class MyCompare2 { public: bool operator()(pair<string, int>p1, pair<string, int>p2) { return (p1.second) < (p2.second); } }; int main() { int n; cin >> n; int re; cin >> re; vector<pair<string, int>>p(n); for (int i = 0; i < n; i++) { cin >> p[i].first >> p[i].second; } if (re == 0) { stable_sort(p.begin(), p.end(), MyCompare1()); //稳定排序,遇到相同数值时,可以保留原来元素的位置顺序。 } else { stable_sort(p.begin(), p.end(), MyCompare2()); } for (int i = 0; i < n; i++) { cout << p[i].first << " " << p[i].second << endl; } return 0; } // 64 位输出请用 printf("%lld")