【1036 25 排序】 Boys vs Girls
传送门
题意
给定 \(n\) 组数据,每组有 \(name,id,gender,grade\) ,\(gender\) 分为 \(male、famale\) 输出 \(grade\) 最大的 \(famale\) ,最小的 \(male\) ,如果数据全为一种输出特定格式
数据范围
\(n\)
题解
- 分别实现排序即可,使用
lambda表达式
Code
#include <bits/stdc++.h>
using namespace std;
struct Student {
string id, name;
char gender;
int grade;
};
int main() {
int n; cin >> n;
vector<Student> male, female;
for (int i = 0; i < n; i++) {
string id, name;
char gender;
int grade;
cin >> name >> gender >> id >> grade;
if (gender == 'M') male.push_back({id, name, gender, grade});
else female.push_back({id, name, gender, grade});
}
sort(male.begin(), male.end(),
[](Student a, Student b) { return a.grade < b.grade; });
sort(female.begin(), female.end(),
[](Student a, Student b) { return a.grade > b.grade; });
bool lack = 0;
if (female.size()) cout << female[0].name<< ' ' << female[0].id << endl;
else cout << "Absent" << endl, lack = 1;
if (male.size()) cout << male[0].name << ' ' << male[0].id << endl;
else cout << "Absent" << endl, lack = 1;
if (lack) cout << "NA";
else cout << female[0].grade - male[0].grade;
}

浙公网安备 33010602011771号