まず第一に、神は、最初の劉さんのブログを掲載しました
https://www.liuchuo.net/これはアドレスです
良いブラシPTA、強く推奨柳神、およびアルゴリズムのメモをブログしたいです
オリジナルタイトル
リストを考えるとNの名前、ID及びグレードで生徒のレコードを。あなたが成績が一定の間隔であるそのうち、それらの生徒のレコードを非増加のために、グレードに関してレコードをソートすることになって、出力されています。
入力仕様:
各入力ファイルには、1つのテストケースが含まれています。各ケースは、以下の形式で与えられます。
N
name[1] ID[1] grade[1]
name[2] ID[2] grade[2]
... ...
name[N] ID[N] grade[N]
grade1 grade2
どこname[i]
とID[i]
なしスペースを超えない10文字の文字列で、grade[i]
[0、100]の整数であり、grade1
かつgrade2
グレードの区間の境界です。すべてのグレードであることが保証されている明確な。
出力仕様:
各テストケースのためには、グレードの出力生徒のレコードは、[指定した間隔である必要がありgrade1
、grade2
]と非増加順になっています。各生徒のレコードは1スペースで区切られた学生の名前やID、行を占めています。その間隔、出力の無い学生のグレードがある場合はNONE
代わりに。
サンプル入力1:
4
Tom CS000001 59
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
60 100
サンプル出力1:
Mike CS991301
Mary EE990830
Joe Math990112
サンプル入力2:
2
Jean AA980920 60
Ann CS01 80
90 95
出力例2:
NONE
効果の対象に
Nは、学生の成績を与えることで、一定の間隔での生徒の成績
情報がない出力NONEに、学生のセクションの内部で出力を必要と
コードは以下の通りです
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct student {
char name[11], id[11];
int grade;
};
bool cmp(student a, student b) {
return a.grade > b.grade;
}
int main(void) {
int N;
int flag = false;
scanf("%d", &N);
vector<student> data(N);
for (int i = 0; i < N; i++) {
scanf("%s%s%d", data[i].name, data[i].id, &data[i].grade);
}
int grade1, grade2;
scanf("%d%d", &grade1, &grade2);
if (grade1 > grade2) {
int t = grade1;
grade1 = grade2;
grade2 = grade1;
}
sort(data.begin(), data.end(), cmp);
for (int i = 0; i < N; i++) {
if (data[i].grade >= grade1 && data[i].grade <= grade2) {
printf("%s %s\n", data[i].name, data[i].id);
flag = true;
}
}
if (!flag) printf("NONE");
return 0;
}