- 3 1
- 000007 James 85
- 000010 Amy 90
- 000001 Zoe 60
- 000001 Zoe 60
- 000007 James 85
- 000010 Amy 90
- 4 2
- 000007 James 85
- 000010 Amy 90
- 000001 Zoe 60
- 000002 James 98
- 000010 Amy 90
- 000002 James 98
- 000007 James 85
- 000001 Zoe 60
- 4 3
- 000007 James 85
- 000010 Amy 90
- 000001 Zoe 60
- 000002 James 9
- 000002 James 9
- 000001 Zoe 60
- 000007 James 85
- 000010 Amy 90
题目大意
给你N个学生的 ID name score,根据输入的排序要求key进行排序
1. 根据ID升序
2. 根据名字升序,注意名字相同时按分数降序
3. 根据分数升序,注意分数相同时按ID升序
思路
建立学生结构体,然后sort排序
- #include
- using namespace std;
- struct Student{
- string id,name;
- int score;
- }s;
- vector
all; - int N,key;
- bool cmp(const Student& x,const Student& y ){
- if(key==1) return x.id < y.id;
- if(key==2) return x.name != y.name ? x.name
y.score; - return x.score != y.score ? x.score < y.score : x.id < y.id;
- }
- int main()
- {
- cin >> N >> key;
- while (N--){
- cin >> s.id >> s.name >> s.score;
- all.push_back(s);
- }
-
- sort(all.begin(),all.end(),cmp);
- for(const Student& x:all){
- cout << x.id << " " << x.name << " " << x.score << endl;
- }
- return 0;
- }