宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”

现给出一批考生的德才分数,请根据司马光的理论给出录取排名。

输入格式:

输入第一行给出 3 个正整数,分别为:N(≤105),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于 L 的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于 H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线 L 的考生也按总分排序,但排在第三类考生之后。

随后 N 行,每行给出一位考生的信息,包括:准考证号 德分 才分,其中准考证号为 8 位整数,德才分为区间 [0, 100] 内的整数。数字间以空格分隔。

输出格式:

输出第一行首先给出达到最低分数线的考生人数 M,随后 M 行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。

#include <stdio.h>
#include <stdlib.h>
#define MAX 100000
typedef struct
{int num;//numberint v;//virtueint t;//talentint tpye;//种类
}student;
int compare(const void* x, const void* y)//返回正数就交换。
{student a = *(student*)x;student b = *(student*)y;if (a.tpye != b.tpye) return a.tpye - b.tpye;//升序else if ((a.v + a.t) != (b.v + b.t)) return  (b.v + b.t) - (a.v + a.t);//降序else if (a.v != b.v) return  b.v - a.v;//降序else return  a.num - b.num;//升序
}
int main()
{int i, k = 0;int n, l, h;student a[MAX] ;scanf("%d %d %d", &n, &l, &h);    for (i = 0; i < n; i++){scanf("%d %d %d", &a[i].num, &a[i].v, &a[i].t);if (a[i].v >= l && a[i].t >= l){k++;if (a[i].v >= h && a[i].t >= h) a[i].tpye = 1;else if (a[i].v >= h) a[i].tpye = 2;else if (a[i].v >= a[i].t) a[i].tpye = 3;else a[i].tpye = 4;}else{a[i].tpye = 5;}}qsort(a, n, sizeof(student), compare);printf("%d\n", k);for (i = 0; i < k; i++){printf("%d %d %d\n", a[i].num, a[i].v, a[i].t);}
}

PAT乙级10015题——C语言相关推荐

  1. PAT乙级10019题——C语言

    给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有" ...

  2. PAT乙级10016题——C语言

    正整数 A 的"DA​(为 1 位整数)部分"定义为由 A 中所有 DA​ 组成的新整数 PA​.例如:给定 A=3862767,DA​=6,则 A 的"6 部分&quo ...

  3. 【PTA】 PAT乙级真题,95题(C++,AC代码)

    PAT乙级真题95题 标号 标题 分数 通过数 提交数 通过率 1001 害死人不偿命的(3n+1)猜想 15 109558 309119 0.35 1002 写出这个数 20 71739 28156 ...

  4. PAT乙级1002 题(与柳神思路比对)

    PAT乙级1002 题:写出这个数 题目描述:读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字(n 小于 1 0 100 10^{100} 10100) 输出格式要求:在一行内输出 ...

  5. PAT乙级刷题心得和常用函数总结 (c++实现)

    开始先说最重要心得体会: 写代码前,先在纸上写写画画,写下伪码,理清思路,别上来就敲代码,效率极低还易出现bug. 2019-12-12到2020-01-17,用C++刷完了PAT乙级95道题目,第6 ...

  6. PAT乙级真题1058 || 选择题(详解,C/C++示例,测试点分析)

    [欢迎关注微信公众号:计算机黑科学大全,对话框回复:PAT乙级真题]获取全部真题详解及代码示例 个人博客地址:https://mzwang.top 选择题 题目描述: 批改多选题是比较麻烦的事情,本题 ...

  7. 1085 PAT单位排行 (25分)-PAT乙级真题-C++实现

    1085 PAT单位排行 (25分)-PAT乙级真题-C++实现 题目描述: 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整 ...

  8. PAT乙级真题1089 || 狼人杀-简单版(详解,C/C++示例,测试点分析)

    [欢迎关注微信公众号:计算机黑科学大全,在对话框回复:PAT乙级真题]获取全部真题详解及代码示例,邀请大家加入PAT算法刷题交流qq群:821388108 个人博客:https://mzwang.to ...

  9. 「PAT乙级真题解析」Basic Level 1033 旧键盘打字 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1033 问题分析 题目设定了一个场景: 有 ...

  10. 2021年秋季PAT乙级题解(C语言)

    7-1 好数 (15 分) 好数是指由一对正整数 a<b 按照 a^2+ab+b ^2这个规则生成的数,a 和 b 就称为这个好数的源头.例如 91 就是一个好数,因为 5 ^2+5×6+6 ^ ...

最新文章

  1. python按行读取文件取消空白行_python按行读取文件 如何去掉换行符 \n
  2. python包与模块导入
  3. Android应用程序模块:应用、任务、进程和线程
  4. [MySQL 5.6] GTID实现、运维变化及存在的bug
  5. 大话synchronize底层原理
  6. Python内置数据类型之Dict
  7. html的表格使用函数,从另一个HTML表格创建HTML表格的jQuery函数
  8. 为什么滴滴天猫都玩上了大数据“杀熟”的套路?
  9. valueOf()和toString()详解
  10. SparkContext详述
  11. python抛硬币正面向上概率_Python-计算抛硬币出现连续10次正面朝上的概率的仿真实验...
  12. POJ2456-Aggressive cows
  13. Android 的 Recovery 模式分析
  14. EXCEL常用技巧总结
  15. 我所经历的Android面试|掘金技术征文
  16. 【毕业设计】基于大数据的销量数据预测 -python销量预测 大数据 可视化
  17. 软考高级之系统架构设计师系列【2】考试说明及考点分析
  18. 【写论文用到的几个偷懒的网站和软件】
  19. Failed connect to github-production-release-asset-2e65be.s3.amazonaws.com:443问题
  20. 内容算法解读:提高内容摘要与原文的一致性(Faithfulness)

热门文章

  1. VBA IE对象的操作方法
  2. OH!硬件!—— 开源硬件平台OSHWHub介绍
  3. python三个单引号成对用于什么_python中三个单引号是什么意思
  4. 1553B为什么要加耦合器?
  5. 如何测试计算机的运行速度,如何查看cpu运行速度
  6. 冰冻三尺,非一日之寒!
  7. C++(指针和高级指针)-上篇
  8. 阿里P7亲自教你!昆明java招聘信息
  9. 正在移除icloud数据久_深度梳理一下iOS照片(相册)的逻辑,和减少iCloud的空间占用的方法...
  10. python实现在线答题_仿 StackOverflow 开发在线问答系统