トピックリンク:https://pintia.cn/problem-sets/994805342720868352/problems/994805383929905152
题目描述
名前、IDおよびグレードとNの生徒のレコードのリストを与えられました。あなたが成績が一定の間隔であるそのうち、それらの生徒のレコードを非増加のために、グレードに関してレコードをソートすることになって、出力されています。
输入
各入力ファイルは、1つのテストケースが含まれています。各ケースは、以下の形式で与えられます。
N
name[1] ID[1] grade[1]
name[2] ID[2] grade[2]
... ...
name[N] ID[N] grade[N]
grade1 grade2
名前[i]とID [i]には、スペースのないせいぜい10文字の文字列、グレード[i]としている。ここで、[0、100]の整数であり、グレード1およびgrade2はグレードの区間の境界です。全学年が異なっていることが保証されています。
输出
各テストケースのためにあなたを出力すべき成績が与えられた区間[グレード1、grade2]であり、非増加順になっていたの生徒の記録。各生徒のレコードは1スペースで区切られた学生の名前やID、行を占めています。代わりに、その間隔、出力NONEでいない生徒のグレードがある場合。
サンプル入力
4
トムCS000001 59
ジョーMath990112 89
マイクCS991301 100
メアリーEE990830 95
60 100
サンプル出力
マイクCS991301
メアリーEE990830
ジョーMath990112
コード
#include <cstdio>
#include <algorithm>
using namespace std;
struct student {
char name[20];
char id[20];
int grade;
}stu[110];
bool cmp(student a, student b) {
return a.grade > b.grade;
}
int main(){
int n, flag = 1;
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%s %s %d", stu[i].name, stu[i].id, &stu[i].grade);
sort(stu, stu + n, cmp);
int min, max;
scanf("%d%d", &min, &max);
for(int i = 0; i < n; i++) {
if(stu[i].grade >= min && stu[i].grade <= max) {
printf("%s %s\n", stu[i].name, stu[i].id);
flag = 0;
}
}
if(flag)
printf("NONE\n");
return 0;
}