PTA甲级每日更新 A1036 男孩 vs 女孩

27 篇文章 0 订阅
7 篇文章 0 订阅

给定 NN 个学生的成绩信息,请你求出女生第一名与男生倒数第一名的分数差距。

输入格式

第一行输入整数 NN,表示学生数量。

接下来 NN 行,每行包含一个学生的姓名,性别,ID和成绩。其中姓名和ID是长度不超过 1010 且不包含空格的字符串。性别为 FF(女)或 MM(男)。成绩是一个范围在 [0,100][0,100] 的整数。保证所有学生的成绩互不相同。

输出格式

输出共三行。

第一行输出女生第一名的姓名和ID。

第二行输出男生倒数第一名的姓名和ID。

第三行输出女生第一名的成绩减去男生倒数第一名的成绩的差。

如果不存在某个性别的学生,则在对应行输出 Absent

在第三行输出 NA

数据范围

1≤N≤1011≤N≤101

输入样例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

思路:

  1. 先输入女生,男生的信息,作为临时变量
  2. 初始化女生的分数为-1,男生的分数为101
  3. 当性别为女时,比较分数,更新数据;当性别为男时,比较分数,更新数据
  4.  当女生或男生的分数为初始值时,即没有该性别的输入,输出“Absent”;否则输出信息
  5. 当两个性别的输入都有时,输出分数差,否则输出“NA”。
    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        //女孩的信息
        string girl_name,girl_id;
        int girl_score=-1;
        //男孩的信息
        string boy_name,boy_id;
        int boy_score=101;
        
        int n;
        cin>>n;
        for(int i=0;i<n;i++){
            string name,sex,id;
            int score;
            cin>>name>>sex>>id>>score;
            if(sex=="F"){
                if(girl_score<score){
                    girl_name=name;
                    girl_score=score;
                    girl_id=id;
                }
            }
            
            else{
                 if(boy_score>score){
                    boy_name=name;
                    boy_score=score;
                    boy_id=id;
                }
            }
        }
        if(girl_score==-1) cout<<"Absent"<<endl;
        else cout<<girl_name<<' '<<girl_id<<endl;
        if(boy_score==101) cout<<"Absent"<<endl;
        else cout<<boy_name<<' '<<boy_id<<endl;
        
        if(girl_score==-1||boy_score==101) cout<<"NA"<<endl;
        else{
            cout<<girl_score-boy_score<<endl;
        }
        
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值