简单模拟。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iomanip>
using namespace std;
#define MAX 1000+10
struct Student
{
char name[15];
char sex;
char id[15];
int grade;
} male[MAX], female[MAX], temp;
int cmp(const void *a, const void *b)
{
return (*(Student*)b).grade - (*(Student*)a).grade;
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int N = 0, cnt_m = 0, cnt_f = 0;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> temp.name >> temp.sex >> temp.id >> temp.grade;
if (temp.sex == 'M')
male[cnt_m++] = temp;
else if (temp.sex == 'F')
female[cnt_f++] = temp;
}
if (0 == cnt_f)
cout << "Absent" << endl;
else
{
qsort(female, cnt_f, sizeof(female[0]), cmp);
cout << female[0].name << " " << female[0].id << endl;
}
if (0 == cnt_m)
cout << "Absent" << endl;
else
{
qsort(male, cnt_m, sizeof(male[0]), cmp);
cout << male[cnt_m-1].name << " " << male[cnt_m-1].id << endl;
}
if (0 == cnt_m || 0 == cnt_f)
cout << "NA";
else
cout << female[0].grade - male[cnt_m-1].grade;
return 0;
}