ガールズVS 1036ボーイズ(25分)
今度は、すべての男子学生の最低グレードと女子学生、すべての最高グレードの違いを教えて求められます。
入力仕様:
各入力ファイルには、1つのテストケースが含まれています。各ケースは、学生情報のNライン続く正の整数Nを含有します。各行には名前とIDはスペースを入れずに10文字以内の文字列であるスペースで区切られ、性別がF(メス)またはM(オス)のいずれかで、グレードがあり、学生の名前、性別、IDやグレードが含まれています0と100の間の整数は、すべてのグレードが明瞭であることが保証されます。
出力仕様:
各テストケースのために、3行に出力されます。最初の行は、最高級と女子学生の名前やIDを与え、2行目は、最も低いグレードと男子生徒のことを示します。三行目は、差分グレード与え
代わりに3行目のFグレードのMは学生の1ような種類が存在しない場合は、対応する行の出力不在、および出力NAを。
サンプル入力1:
3
ジョー・M Math990112 89
マイクM CS991301 100
メアリーF EE990830 95
サンプル出力1:
メアリーEE990830
ジョーMath990112
6
サンプル入力2:
1
ジャン・M AA980920 60
出力例2:
不在
ジャンAA980920
NA
ソリューション:
- 最大の女性の得点を探します。そして、最小の男性得点。そして形式で出力。
#include <string>
#include <iostream>
using namespace std;
struct People{
string name;
string couse;
int grade;
}temp,female,male;
int main(){
int n;
cin >> n;
female.name="";female.grade=0;
male.name="";male.grade=101;
string sex;
while(n--!=0){
cin>>temp.name >> sex >> temp.couse >>temp.grade;
if(sex=="M"&&temp.grade<male.grade){
male.name=temp.name;
male.couse=temp.couse;
male.grade=temp.grade;
}else if(sex=="F"&&temp.grade>female.grade){
female.name=temp.name;
female.couse=temp.couse;
female.grade=temp.grade;
}
}
if(female.name==""){
cout << "Absent" <<endl;
}else cout << female.name <<" " <<female.couse <<endl;
if(male.name==""){
cout << "Absent" <<endl;
}else cout <<male.name <<" "<< male.couse << endl;
if(female.name==""||male.name==""){
cout << "NA" ;
}else cout << female.grade-male.grade;
return 0;
}