今度は、すべての男子学生の最低グレードと女子学生、すべての最高グレードの違いを教えて求められます。
入力仕様:
各入力ファイルには、1つのテストケースが含まれています。各ケースは、学生情報のNライン続く正の整数Nを含有します。各行には名前とIDはスペースを入れずに10文字以内の文字列であるスペースで区切られ、性別がF(メス)またはM(オス)のいずれかで、グレードがあり、学生の名前、性別、IDやグレードが含まれています0と100の間の整数は、すべてのグレードが明瞭であることが保証されます。
出力仕様:
各テストケースのために、3行に出力されます。最初の行は、最高級と女子学生の名前やIDを与え、2行目は、最も低いグレードと男子生徒のことを示します。三行目は、差分グレードF-gradeMを与えます。学生の1ような種類ではなく、3行目に、対応する行の出力不在、および出力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
セックス・オーダーテーブルは、それぞれ、二つに分け、女の子のソート男の子れます。
出典:
#include<bits/stdc++.h>
#define Max 1010
using namespace std;
typedef struct student{
string name;
string id;
int score;
}stu;
vector<stu> girl;
vector<stu> boy;
bool compare(stu a,stu b)
{
return a.score>b.score;//降序
}
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
stu t;char c;
cin>>t.name;
getchar();//吸收空格
c=getchar();
cin>>t.id>>t.score;
if(c=='F')
girl.push_back(t);
else
boy.push_back(t);
}
sort(girl.begin(),girl.end(),compare);
sort(boy.begin(),boy.end(),compare);
if(!girl.size())
cout<<"Absent"<<endl;
else
cout<<girl[0].name<<" "<<girl[0].id<<endl;
if(!boy.size())
cout<<"Absent"<<endl;
else
cout<<(boy.end()-1)->name<<" "<<(boy.end()-1)->id<<endl;
if(girl.size()&&boy.size())
cout<<girl[0].score-(boy.end()-1)->score<<endl;
else
cout<<"NA"<<endl;
}