PAT 1036

题目 : Boys vs Girls

分值 : 25
难度 : 水题
思路 : 排个序,性别第一关键字,成绩第二关键字.
坑点 : 没啥可坑的
评语 : 水题水题

具体代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <algorithm>
using namespace std ;
#define L(i,N,K) for(int i = 0 ; i< N ; i+=K)
typedef struct Node{
string name ;
string gender ;
string id ;
int grade ;
}Nodes;
bool cmp(Node a , Node b )
{
if(a.gender != b.gender )
return a.gender < b.gender ;
return a.grade> b.grade ;
}
Nodes data[10001];
int main() {
int N ;
cin>> N ;
L(i,N,1)
cin >> data[i].name >>data[i].gender>>data[i].id>>data[i].grade ;
sort(data,data+N,cmp);
int flag = 0 ;

if(data[0].gender != "F" )
{
cout << "Absent"<<endl ;
flag =1 ;
}
else
cout<<data[0].name <<" "<<data[0].id<<endl ;
if(data[N-1].gender!="M")
{
cout << "Absent"<<endl ;
flag =1 ;
}
else
cout<<data[N-1].name <<" "<<data[N-1].id<<endl ;
if(flag) cout <<"NA"<<endl ;
else cout << data[0].grade - data[N-1].grade <<endl ;
}