成绩排序

简介: 成绩排序


题目描述

输入

输出

样例输入1

5

Alice 99 98 97 96

Bob 98 97 96 94

Coy 94 94 95 96

Dan 93 95 96 97

Evan 0 94 95 95

样例输出1

Alice Bob Coy Dan

Alice Bob Dan Coy

Alice Bob Dan Coy

Dan Alice Coy Evan

Alice Bob Dan Coy

做法1

#include <bits/stdc++.h>
using namespace std;
struct Record {
    string name;
    int c1, c2, c3, c4;
};
int main() {
    int n;
    cin >> n;
    vector<Record> data(n);
    for (int i = 0; i < n; ++i) {
        cin >> data[i].name >> data[i].c1 >> data[i].c2 >> data[i].c3 >> data[i].c4;
    }
    sort(data.begin(), data.end(), [](const Record &lhs, const Record &rhs) {
        return lhs.c1 > rhs.c1 || (lhs.c1 == rhs.c1 && lhs.name < rhs.name);
    });
    cout << data[0].name << " " << data[1].name << " " << data[2].name << " " << data[3].name << endl;
    sort(data.begin(), data.end(), [](const Record &lhs, const Record &rhs) {
        return lhs.c2 > rhs.c2 || (lhs.c2 == rhs.c2 && lhs.name < rhs.name);
    });
    cout << data[0].name << " " << data[1].name << " " << data[2].name << " " << data[3].name << endl;
    sort(data.begin(), data.end(), [](const Record &lhs, const Record &rhs) {
        return lhs.c3 > rhs.c3 || (lhs.c3 == rhs.c3 && lhs.name < rhs.name);
    });
    cout << data[0].name << " " << data[1].name << " " << data[2].name << " " << data[3].name << endl;
    sort(data.begin(), data.end(), [](const Record &lhs, const Record &rhs) {
        return lhs.c4 > rhs.c4 || (lhs.c4 == rhs.c4 && lhs.name < rhs.name);
    });
    cout << data[0].name << " " << data[1].name << " " << data[2].name << " " << data[3].name << endl;
    sort(data.begin(), data.end(), [](const Record &lhs, const Record &rhs) {
        int lt = lhs.c1 + lhs.c2 + lhs.c3 + lhs.c4;
        int rt = rhs.c1 + rhs.c2 + rhs.c3 + rhs.c4;
        return lt > rt || (lt == rt && lhs.name < rhs.name);
    });
    cout << data[0].name << " " << data[1].name << " " << data[2].name << " " << data[3].name << endl;
    return 0;
}
相关文章
|
1月前
【九度 OJ 05】统计同成绩学生人数
【九度 OJ 05】统计同成绩学生人数
12 1
|
1月前
|
C++
【九度 02】N个学生数据成绩排序
【九度 02】N个学生数据成绩排序
17 0
|
3月前
|
SQL 数据库连接 数据库
查询学号为10002学生的所有成绩
【8月更文挑战第5天】查询学号为10002学生的所有成绩。
168 5
|
4月前
7-1 学生成绩排序
7-1 学生成绩排序
36 0
|
C++
成绩统计
小蓝给学生们组织了一场考试,卷面总分为100分,每个学生的得分都是一个0到100的整数。如果得分至少是60分,则称为及格。
84 0
|
6月前
计蒜客_成绩排序
计蒜客_成绩排序
成绩排序 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
成绩排序 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
616 0