给出 N 个学生的名称,ID 和成绩。输出成绩在给定区间内的学生信息。题目保证给出的学生成绩都是唯一的。
输入第一行包含 1 个正整数:N,表示学生总数。之后 N 行,每行按姓名 ID 成绩
的格式给出 N 个学生的信息。最后一行给出两个正整数 grade1 和 grade2。
按成绩降序的标准,输出在[grade1,grade2]区间内的所有学生的姓名和 ID。如果没有学生成绩在这个区间内,输出NONE
。
先定义一个类 Student,其中应该包括以下几种数据成员:姓名 name、id、成绩 grade。按成绩从高到低对所有学生排序。遍历所有的学生,输出在指定区间内学生的姓名和 ID 即可。
#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;
}