AcWing 1505. 列表排序
原题链接
简单
作者:
mkuiwu
,
2021-01-05 14:27:43
,
所有人可见
,
阅读 441
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct Student
{
string id;
string name;
int score;
};
bool cmp1(Student& s1, Student& s2){
return s1.id < s2.id;
}
bool cmp2(Student& s1, Student& s2){
if(s1.name != s2.name) return s1.name < s2.name;
return s1.id < s2.id;
}
bool cmp3(Student& s1, Student& s2){
if(s1.score != s2.score) return s1.score < s2.score;
return s1.id < s2.id;
}
void print_stds(vector<Student>& stds){
//000007 James 85
for(auto std : stds)
printf("%s %s %d\n", std.id.c_str(), std.name.c_str(), std.score);
}
vector<Student> stds;
int main(){
int n, c;
cin >> n >> c;
while(n--){
string id, name;
int score;
cin >> id >> name >> score;
stds.push_back({id, name, score});
}
if(c == 1){
sort(stds.begin(), stds.end(), cmp1);
}else if(c == 2){
sort(stds.begin(), stds.end(), cmp2);
}else sort(stds.begin(), stds.end(), cmp3);
print_stds(stds);
return 0;
}