PAT A1036 Boys vs Girls
Sample Input 1:
3
Joe M Math990112 89
Mike M CS991301 100
Mary F EE990830 95
Sample Output 1:
Mary EE990830
Joe Math990112
6
Sample Input 2:
1
Jean M AA980920 60
Sample Output 2:
Absent
Jean AA980920
NA
-
思路1:
找Famle最大值,Male最小值,设置Fmax,Mmin存储当前最大、最小 ,不断遍历更新 -
code1:
#include <cstdio>
#include <iostream>
using namespace std;
int n, cntF = 0, cntM = 0;
struct Stu{
char gender, id[12], name[12];
int grade;
}Fmax, Fmin, Mmax, Mmin, tmp;
void init(){
Fmax.grade = -1;
Mmin.grade = 101;
}
int main(){
init();
scanf("%d", &n);
for(int i = 0; i < n; ++i){
scanf("%s %c %s %d", &tmp.name, &tmp.gender, &tmp.id, &tmp.grade);
if(tmp.gender == 'F'){
if(tmp.grade > Fmax.grade){
Fmax = tmp;
cntF++;
}
}
else{
if(tmp.grade < Mmin.grade){
Mmin = tmp;
cntM++;
}
}
}
if(cntF != 0){
printf("%s %s\n", Fmax.name, Fmax.id);
}else printf("Absent\n");
if(cntM != 0){
printf("%s %s\n", Mmin.name, Mmin.id);
}else printf("Absent\n");
if(cntF == 0 || cntM == 0) printf("NA\n");
else printf("%d", Fmax.grade - Mmin.grade);
return 0;
}
- T2 code :
#include <bits/stdc++.h>
using namespace std;
struct Stu{
string name, id;
}male_lowest, female_highest;
int main(){
int n, f_max = -1, m_min = 101;
scanf("%d", &n);
for(int i = 0; i < n; ++i){
string _name, _id;
char _gender;
int _score;
cin >> _name >> _gender >> _id >> _score;
if(_gender == 'M' && _score < m_min){
m_min = _score;
male_lowest.name = _name;
male_lowest.id = _id;
}
if(_gender == 'F' && _score > f_max){
f_max = _score;
female_highest.name = _name;
female_highest.id = _id;
}
}
if(f_max == -1) printf("Absent\n");
else printf("%s %s\n", female_highest.name.c_str(), female_highest.id.c_str());
if(m_min == 101) printf("Absent\n");
else printf("%s %s\n", male_lowest.name.c_str(), male_lowest.id.c_str());
if(f_max == -1 || m_min == 101) printf("NA");
else printf("%d", f_max-m_min);
return 0;
}