ガールズVS 1036ボーイズ(25分)

今度は、すべての男子学生の最低グレードと女子学生、すべての最高グレードの違いを教えて求められます。

入力仕様:

各入力ファイルには、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;
}
公開された97元の記事 ウォン称賛12 ビュー2392

おすすめ

転載: blog.csdn.net/weixin_43301333/article/details/104097958