Skip to content

Latest commit

 

History

History
51 lines (42 loc) · 1.51 KB

1083. List Grades.md

File metadata and controls

51 lines (42 loc) · 1.51 KB

【PAT A-1083】List Grades

题意概述

给出 N 个学生的名称,ID 和成绩。输出成绩在给定区间内的学生信息。题目保证给出的学生成绩都是唯一的。

输入输出格式

输入第一行包含 1 个正整数:N,表示学生总数。之后 N 行,每行按姓名 ID 成绩的格式给出 N 个学生的信息。最后一行给出两个正整数 grade1 和 grade2。

按成绩降序的标准,输出在[grade1,grade2]区间内的所有学生的姓名和 ID。如果没有学生成绩在这个区间内,输出NONE

算法设计

先定义一个类 Student,其中应该包括以下几种数据成员:姓名 name、id、成绩 grade。按成绩从高到低对所有学生排序。遍历所有的学生,输出在指定区间内学生的姓名和 ID 即可。

C++代码

#include <bits/stdc++.h>
using namespace std;
using gg = long long;
struct Student {
    string name, id;
    gg grade;
};
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    gg ni, g1, g2;
    cin >> ni;
    vector<Student> stu(ni);
    for (auto& i : stu) {
        cin >> i.name >> i.id >> i.grade;
    }
    sort(stu.begin(), stu.end(), [](const Student& s1, const Student& s2) {
        return s1.grade > s2.grade;
    });
    cin >> g1 >> g2;
    bool f = false;
    for (auto& s : stu) {
        if (s.grade >= g1 and s.grade <= g2) {
            cout << s.name << " " << s.id << "\n";
            f = true;
        }
    }
    if (not f)
        cout << "NONE";
    return 0;
}