题解|#成绩排序# C++ 利用map底层排序,最简洁代码
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
int n, f;
cin >> n >> f;
map<int, vector<string>> strmap;
string name;
int grade;
for (int i = 0; i < n; i++) {
cin >> name;
cin >> grade;
if (f == 1) {
strmap[grade].push_back(name);
} else {
strmap[-grade].push_back(name);
}
}
for (auto iter = strmap.begin(); iter != strmap.end(); iter++) {
if (f == 1) {
for (auto i : iter->second) {
cout << i << " " << iter->first << endl;
}
} else {
for (auto i : iter->second) {
cout << i << " " << -iter->first << endl;
}
}
}
return 0;
}
// 64 位输出请用 printf("%lld")