题⽬描述: 宋代史学家司⻢光在《资治通鉴》中有⼀段著名的“德才论”:“是故才德全尽谓之圣⼈,才德兼亡谓之愚⼈,德胜才谓之君⼦,才胜德谓之⼩⼈。凡取⼈之术,苟不得圣⼈,君⼦⽽与之,与其得⼩⼈,不 若得愚⼈。”
现给出⼀批考⽣的德才分数,请根据司⻢光的理论给出录取排名。
输⼊格式:
输⼊第1⾏给出3个正整数,分别为:N(<=105),即考⽣总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考⽣才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低 于此线的被定义为“才德全尽”,此类考⽣按德才总分从⾼到低排序;才分不到但德分到线的⼀类考⽣ 属于“德胜才”,也按总分排序,但排在第⼀类考⽣之后;德才分均低于H,但是德分不低于才分的考⽣ 属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第⼆类考⽣之后;其他达到最低线L的考⽣也按总分排序,但排在第三类考⽣之后。 随后N⾏,每⾏给出⼀位考⽣的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才 分为区间[0, 100]内的整数。数字间以空格分隔。
输出格式:
输出第1⾏⾸先给出达到最低分数线的考⽣⼈数M,随后M⾏,每⾏按照输⼊格式输出⼀位考⽣的信 息,考⽣按输⼊中说明的规则从⾼到低排序。当某类考⽣中有多⼈总分相同时,按其德分降序排列; 若德分也并列,则按准考证号的升序输出。
输⼊样例:
1 | 14 60 80 |
输出样例:
1 | 12 |
分析:⽤结构体存储。写好cmp函数~结构体数组vector v[4]中v[0]保存第⼀类考⽣,v[1]保存第⼆类考⽣……以此类推。写好cmp函数很重要,cmp函数中,排序先按照总分排序,然后按照德分排序,最后按照才分排序……最后输出符合条件的结果~
1 |
|
本系列(PAT算法)作者mail:1302304703@qq.com(非本人)