PAT 甲级 1036 Boys vs Girls(20)
https://pintia.cn/problem-sets/994805342720868352/problems/994805453203030016
This time you are asked to tell the difference between the lowest grade of all the male students and the highest grade of all the female students.
Input Specification:
Each input file contains one test case. Each case contains a positive integer N, followed by N lines of student information. Each line contains a student's name
, gender
, ID
and grade
, separated by a space, where name
and ID
are strings of no more than 10 characters with no space, gender
is either F
(female) or M
(male), and grade
is an integer between 0 and 100. It is guaranteed that all the grades are distinct.
Output Specification:
For each test case, output in 3 lines. The first line gives the name and ID of the female student with the highest grade, and the second line gives that of the male student with the lowest grade. The third line gives the difference gradeF−gradeM. If one such kind of student is missing, output Absent
in the corresponding line, and output NA
in the third line instead.
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
时间复杂度:$O(N)$
代码:
#include <bits/stdc++.h>
using namespace std; int N; struct Students {
char name[20];
char sex[5];
char num[20];
int Grade;
}students[100100]; /*bool cmp(const Students& a, const Students& b) {
if(a.sex != b.sex)
return a.sex > b.sex;
else
return a.Grade > b.Grade;
}*/ int main() {
scanf("%d", &N);
for(int i = 1; i <= N; i ++)
scanf("%s%s%s%d", students[i].name, students[i].sex, students[i].num, &students[i].Grade); int m = 0, f = 0;
//sort(students + 1, students + 1 + N, cmp); int s1 = 999, s2 = -999;
int temp1 = 0, temp2 = 0;
for(int i = 1; i <= N; i ++) {
if(strcmp(students[i].sex, "M") == 0) {
if(students[i].Grade < s1) {
s1 = students[i].Grade;
temp1 = i;
}
} else {
if(students[i].Grade > s2) {
s2 = students[i].Grade;
temp2 = i;
}
}
} for(int i = 1; i <= N; i ++) {
if(strcmp(students[i].sex, "M") == 0)
m ++;
else
f ++;
} if(f == 0)
printf("Absent\n%s %s\nNA\n", students[temp1].name, students[temp1].num);
else if(m == 0)
printf("%s %s\nAbsent\nNA\n", students[temp2].name, students[temp2].num);
else {
printf("%s %s\n", students[temp2].name, students[temp2].num);
printf("%s %s\n", students[temp1].name, students[temp1].num);
printf("%d\n", students[temp2].Grade - students[temp1].Grade);
} return 0;
}
PAT 甲级 1036 Boys vs Girls(20)的更多相关文章
- PAT 甲级 1036 Boys vs Girls (25 分)(简单题)
1036 Boys vs Girls (25 分) This time you are asked to tell the difference between the lowest grade ...
- PAT甲级——1036 Boys vs Girls
1036 Boys vs Girls This time you are asked to tell the difference between the lowest grade of all th ...
- PAT Advanced 1036 Boys vs Girls (25 分)
This time you are asked to tell the difference between the lowest grade of all the male students and ...
- PAT甲级——A1036 Boys vs Girls
This time you are asked to tell the difference between the lowest grade of all the male students and ...
- PAT甲级:1036 Boys vs Girls (25分)
PAT甲级:1036 Boys vs Girls (25分) 题干 This time you are asked to tell the difference between the lowest ...
- PAT 1036 Boys vs Girls[简单]
1036 Boys vs Girls (25 分) This time you are asked to tell the difference between the lowest grade of ...
- PAT 1036 Boys vs Girls (25 分)
1036 Boys vs Girls (25 分) This time you are asked to tell the difference between the lowest grade ...
- 1036 Boys vs Girls (25 分)
1036 Boys vs Girls (25 分) This time you are asked to tell the difference between the lowest grade of ...
- 1036 Boys vs Girls (25分)(水)
1036 Boys vs Girls (25分) This time you are asked to tell the difference between the lowest grade o ...
随机推荐
- JS基础——数组API之数组操作(filter、map、some、every、sort)
var arr = [1,2,3,4]; forEach arr.forEach((item,index,arr) => { console.log(item) //结果为1,2,3,4 } ...
- openresty安装配置 Ubuntu下
1.进入openresty-1.11.2.4的压缩包木木,我这里是在“/usr/local/”下: 2.进入后执行[tar -xzvf openresty-1.11.2.4.tar.gz]进行解压 3 ...
- JVM——Java内存区域
一,概述: Java跟C++不同,在内存管理区域C++程序员拥有着最高权力,但是正是因为如此,所以C++程序员要照顾这个对象的生老病死,从创建到消亡都是由程序员决定的. 但是Java程序员在虚拟机的自 ...
- VMware虚拟化NSX-Manager命令行更改admin用户密码
1.1 登录到NSX-Manager命令行界面,输入用户名和密码登录到用户模式 Log in to the vSphere Client and select an NSX virtual ap ...
- ASP.NET Web用户控件
用户控件可用来实现页面中可重用的代码,是可以一次编写就多处方便使用的功能块.它们是 ASP.NET控件封装最简单的形式.由于它们最简单,因此创建和使用它们也是最简单的.用户控件实际上是把已有的服务器控 ...
- JDBC与Statement和PreparedStatement的区别
一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...
- Python的scrapy之爬取51job网站的职位
今天老师讲解了Python中的爬虫框架--scrapy,然后带领我们做了一个小爬虫--爬取51job网的职位信息,并且保存到数据库中 用的是Python3.6 pycharm编辑器 爬虫主体: im ...
- Awakening Your Senses【唤醒你的感觉官能】
Awakening Your Senses Give youself a test. Which way is the wind blowing? How many kinds of wildflow ...
- Python3爬虫(一)HTTP相关基础
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.URI.URL.URN.HTTP URI:统一资源标志符 URL:是URI的一个子集 URN:是URI的另一个 ...
- C++ vector二维数组
C++ 构建二维动态数组 int **p; p = ]; //注意,int*[10]表示一个有10个元素的指针数组 ; i < ; ++i) { p[i] = ]; } 这样就构成10*5的数组 ...