PAT (Advanced) 1036. Boys vs Girls (25)
2018-03-03 14:59
330 查看
原题:1036. Boys vs Girls (25)
解题思路:
排两次序,按题意找出符合条件的人即可。
代码如下:#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1000 + 5;
struct student
{
char name[15];
char course[15];
int grade;
int male;
} stu[maxn];
bool cmp1(student a, student b)
{
return a.male < b.male || (a.male == b.male && a.grade > b.grade);
}
bool cmp2(student a, student b)
{
return a.male > b.male || (a.male == b.male && a.grade < b.grade);
}
int main()
{
int n;
while(scanf("%d", &n) == 1)
{
if(n == 0) {printf("Absent\nAbsent\nNA\n"); continue;}
for(int i = 0; i < n; i++)
{
char m[2];
scanf("%s%s%s%d", stu[i].name, m, stu[i].course, &stu[i].grade);
if(m[0] == 'M') stu[i].male = 1;
else stu[i].male = 0;
}
sort(stu, stu+n, cmp1);
int score1 = -1, score2 = -1;
if(stu[0].male == 0) {printf("%s %s\n", stu[0].name, stu[0].course); score1 = stu[0].grade;}
else printf("Absent\n");
sort(stu, stu+n, cmp2);
if(stu[0].male == 1) {printf("%s %s\n", stu[0].name, stu[0].course); score2 = stu[0].grade;}
else printf("Absent\n");
if(score1 != -1 && score2 != -1) printf("%d\n", score1-score2);
else printf("NA\n");
}
return 0;
}
解题思路:
排两次序,按题意找出符合条件的人即可。
代码如下:#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1000 + 5;
struct student
{
char name[15];
char course[15];
int grade;
int male;
} stu[maxn];
bool cmp1(student a, student b)
{
return a.male < b.male || (a.male == b.male && a.grade > b.grade);
}
bool cmp2(student a, student b)
{
return a.male > b.male || (a.male == b.male && a.grade < b.grade);
}
int main()
{
int n;
while(scanf("%d", &n) == 1)
{
if(n == 0) {printf("Absent\nAbsent\nNA\n"); continue;}
for(int i = 0; i < n; i++)
{
char m[2];
scanf("%s%s%s%d", stu[i].name, m, stu[i].course, &stu[i].grade);
if(m[0] == 'M') stu[i].male = 1;
else stu[i].male = 0;
}
sort(stu, stu+n, cmp1);
int score1 = -1, score2 = -1;
if(stu[0].male == 0) {printf("%s %s\n", stu[0].name, stu[0].course); score1 = stu[0].grade;}
else printf("Absent\n");
sort(stu, stu+n, cmp2);
if(stu[0].male == 1) {printf("%s %s\n", stu[0].name, stu[0].course); score2 = stu[0].grade;}
else printf("Absent\n");
if(score1 != -1 && score2 != -1) printf("%d\n", score1-score2);
else printf("NA\n");
}
return 0;
}
相关文章推荐
- PAT (Advanced Level) 1036. Boys vs Girls (25) 结构体排序
- PAT (Advanced Level)1036. Boys vs Girls (25)
- PAT (Advanced Level) 1036. Boys vs Girls (25)
- 1036. Boys vs Girls (25)【水题】——PAT (Advanced Level) Practise
- 【PAT (Advanced Level)】1036. Boys vs Girls (25)
- PAT (Advanced Level) Practise 1036 Boys vs Girls (25)
- PAT (Advanced Level) Practise 1036 Boys vs Girls (25)
- 【C++】PAT(advanced level)1036. Boys vs Girls (25)
- PAT (Advanced Level) 1036. Boys vs Girls (25) 解题报告
- 【PAT】【Advanced Level】1036. Boys vs Girls (25)
- PAT(甲级)1036. Boys vs Girls (25)
- PAT 1036. Boys vs Girls (25)
- PAT 1036. Boys vs Girls (25)
- PAT甲级1036. Boys vs Girls (25)
- PAT甲级.1036. Boys vs Girls (25)
- PAT甲级 1036. Boys vs Girls (25)
- PAT甲级真题及训练集(10)--1036. Boys vs Girls (25)
- 【PAT甲级】1036. Boys vs Girls (25)——JAVA实现
- 1036. Boys vs Girls (25)-PAT甲级真题
- PAT-A-1036. Boys vs Girls (25)