给定 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
我的解法:
#include<bits/stdc++.h>
using namespace std;
int main(){
string male,female,mid,fid;
int mscore,fscore;
int n;
cin>>n;
for(int i=0;i<n;i++){
string name,sex,id;
int grade;
cin>>name>>sex>>id>>grade;
//女生最高分
if(female.empty()&&sex=="F"||sex=="F"&&fscore<grade){
female=name;
fscore=grade;
fid=id;
}
//男生最低分
else if(male.empty()&&sex=="M"||sex=="M"&&mscore>grade){
male=name;
mscore=grade;
mid=id;
}
}
if(female.empty()){
cout<<"Absent"<<endl;
}
else{
cout<<female<<" "<<fid<<endl;
}
if(male.empty()){
cout<<"Absent"<<endl;
}
else{
cout<<male<<" "<<mid<<endl;
}
if(male.empty()||female.empty()){
cout<<"NA"<<endl;
}
else{
cout<<abs(mscore-fscore)<<endl;
}
return 0;
}
收获:
abs()函数求绝对值