ガールズVS 1036ボーイズ(25分)
今度は、すべての男子学生の最低グレードと女子学生、すべての最高グレードの違いを教えて求められます。
入力仕様:
各入力ファイルには、1つのテストケースが含まれています。各ケースは、正の整数含ま 続いてN、 学生情報のNラインを。各行は生徒のを含んで name
、 gender
、 ID
および grade
、スペースで区切ら name
や ID
スペースを入れずに10文字以内の文字列である、 gender
のいずれかである F
(メス)または M
(オス)、および grade
それが保証され、0から100の間の整数であります全学年が異なっていること。
出力仕様:
各テストケースのために、3行に出力されます。最初の行は、最高級と女子学生の名前やIDを与え、2行目は、最も低いグレードと男子生徒のことを示します。第三のラインは差を与える G 、R dはE F - G R DのE Mを。学生のそのような種類は、出力不足している場合は 、対応するラインで、出力 の代わりに3行目を。Absent
NA
サンプル入力1:
3
Joe M Math990112 89
Mike M CS991301 100
Mary F EE990830 95
サンプル出力1:
Mary EE990830
Joe Math990112
6
サンプル入力2:
1
Jean M AA980920 60
出力例2:
Absent Jean AA980920 NA
トピック分析:ソートの質問に直接書き込みにソート慎重STLへ
1 の#define _CRT_SECURE_NO_WARNINGS 2の#include <climits> 3の#include <iostreamの> 4の#include <ベクトル> 5の#include <キュー> 6の#include <地図> 7の#include <積層> 8の#include <アルゴリズム> 9の#include < 文字列 > 10の#include <cmath> 11 使って 名前空間はstdを、 12 構造体学生{ 13 列名、性別、ID。 14 INT グレード。 15 }。 16 ブール値の比較(CONST学生&、constの学生&B) 17 { 18 リターン a.grade < b.grade。 19 } 20 のint main()の 21 { 22 ベクター<学生> SM。 23 ベクトル<学生> SF。 24 int型N。 25 CIN >> N。 26 文字列の名前、性別、ID; 27 INT グレード。 28 のために(INTは iは= 0 ; I <N; I ++ ) 29 { 30 CIN >>名>>性別>> ID >> グレード。 31 であれば(性別== " M " ) 32 SM.push_back({名前、性別、ID、グレード})。 33 他 34 SF.push_back({名前、性別、ID、グレード})。 35 } 36 ソート(SM.begin()、SM.end()、比較)。 37 ソート(SF.begin()、SF.end()、比較)。 38 であれば(SF.size()== 0 || SM.size()== 0 ) 39 { 40 であれば(SF.size()== 0 ) 41 { 42 裁判所未満<< " 不在" << てendl; 43 であれば(SM.size()== 0 ) 44 COUT << " 不在" << ENDL。 45 他 46 。coutの<<(* SM.begin())名<< " "。<<(* SM.begin())ID << てendl; 47 } 48 他の 49 { 50 COUT <<(*(SF.end() - 1))。名<< " " <<(*(SF。51 であれば(SM.size()== 0 ) 52 COUT << " 不在" << ENDL。 53 } 54 COUT << " NA " 。 55 } 56 他の 57 { 58 COUT <<(*(SF.end() - 1))名<< " " <<(*(SF.end() - 1))ID << ENDL。 59 coutの<<(* SM.begin())。名前<< " " <<(* SM.begin())。ID << endl; 60 coutの<<(*(SF.end() - 1))グレード- (*。SM.begin())グレード。 61 } 62 }