男孩 vs 女孩
给定 N 个学生的成绩信息,请你求出女生第一名与男生倒数第一名的分数差距。
输入格式
第一行输入整数 N,表示学生数量。
接下来 N行,每行包含一个学生的姓名,性别,ID和成绩。其中姓名和ID是长度不超过 10且不包含空格的字符串。性别为 F(女)或 M(男)。成绩是一个范围在 [0,100]的整数。保证所有学生的成绩互不相同。
输出格式
输出共三行。
第一行输出女生第一名的姓名和ID。
第二行输出男生倒数第一名的姓名和ID。
第三行输出女生第一名的成绩减去男生倒数第一名的成绩的差。
如果不存在某个性别的学生,则在对应行输出 Absent。
在第三行输出 NA。
数据范围
1≤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
C++ 代码
#include<iostream>
using namespace std;
int main()
{
int n ;
cin>>n;
string max_girl_name = "" , min_boy_name = "", max_girl_id = "" , min_boy_id = "";
int max_girl_grade = -1, min_boy_grade = 101, girl_num = 0, boy_num = 0;//最小的成绩初始必须小于0,最大的成绩初始必须大于100。
while(n--)
{
string name,gender,id;
int grade;
cin>>name>>gender>>id>>grade;//字符串和整型也可以一起输出。
//cout<<name<<gender<<id<<grade<<endl;
if(gender=="F")
{
girl_num++;
if(grade > max_girl_grade)
{
max_girl_grade = grade;
max_girl_name = name;
max_girl_id = id;
}
}
else
{
boy_num++;
if(grade < min_boy_grade)
{
min_boy_grade = grade;
min_boy_name = name;
min_boy_id = id;
}
}
}
if(boy_num and girl_num)
{
cout<<max_girl_name<<" "<<max_girl_id<<endl;
cout<<min_boy_name<<" "<<min_boy_id<<endl;
cout<<max_girl_grade - min_boy_grade;
}
else
{
if(girl_num==0 and boy_num)
{
cout<<"Absent"<<endl;
cout<<min_boy_name<<" "<<min_boy_id<<endl;
cout<<"NA"<<endl;
}
else if(girl_num and boy_num==0)
{
cout<<max_girl_name<<" "<<max_girl_id<<endl;
cout<<"Absent"<<endl;
cout<<"NA"<<endl;
}
else
{
cout<<"Absent"<<endl;
cout<<"Absent"<<endl;
cout<<"NA"<<endl;
}
}
}