【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;
}
posted @ 2021-02-20 13:27  Hyx'  阅读(70)  评论(0)    收藏  举报