PAT(C语言)7-1 德才论 (30 分)

简介: PAT(C语言)7-1 德才论 (30 分)

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

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

输入格式:

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

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

输出格式:

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

输入样例:

14 60 80
10000001 64 90
10000002 90 60
10000011 85 80
10000003 85 80
10000004 80 85
10000005 82 77
10000006 83 76
10000007 90 78
10000008 75 79
10000009 59 90
10000010 88 45
10000012 80 100
10000013 90 99
10000014 66 60

输出样例:

12
10000013 90 99
10000012 80 100
10000003 85 80
10000011 85 80
10000004 80 85
10000007 90 78
10000006 83 76
10000005 82 77
10000002 90 60
10000014 66 60
10000008 75 79
10000001 64 90
#include<stdio.h>
#include<stdlib.h>
typedef struct student{
    int number;
    int de;
    int cai;
}S;
void Print(S a[],int len)
{
    int i;
    for(i=0;i<len;i++)
        printf("%d %d %d\n",a[i].number,a[i].de,a[i].cai);
}
int compare(const void *a,const void *b){
    S *x=(S*)a,*y=(S*)b;
    if(x->de+x->cai!=y->de+y->cai)
        return x->de+x->cai<y->de+y->cai;
    else if(x->de!=y->de)
        return x->de<y->de;
    else
        return x->number>y->number;
}
int main(){
    int num,jige,youxiu,c1 =0,c2=0,c3=0,c4=0;
    scanf("%d%d%d",&num,&jige,&youxiu);
    S m1[num],m2[num],m3[num],m4[num],stu;
    for(int i = 0;i < num;i++){
        if(scanf("%d%d%d",&stu.number,&stu.de,&stu.cai));
        if(stu.de>=jige&&stu.cai>=jige){
            if(stu.de>=youxiu&&stu.cai>youxiu){
                m1[c1++] = stu;
            }
            else if(stu.de>=youxiu){
                m2[c2++] = stu;
            }
            else if(stu.de>=stu.cai){
                m3[c3++] = stu;
            }
            else{
                m4[c4++] = stu;
            }
        }

    }
    qsort(m1,c1,sizeof(S),compare);
    qsort(m2,c2,sizeof(S),compare);
    qsort(m3,c3,sizeof(S),compare);
    qsort(m4,c4,sizeof(S),compare);
    printf("%d\n",c1+c2+c3+c4);
    Print(m1,c1);
    Print(m2,c2);
    Print(m3,c3);
    Print(m4,c4);
    return 0;
}
相关文章
|
Python
用python写一个跳棋脚本
用python写一个跳棋脚本
284 1
|
9月前
|
SQL 监控 Java
Java Web应用中数据库连接池的配置与优化
Java Web应用中数据库连接池的配置与优化
453 1
|
人工智能 开发者
AIGC主题征文开始啦
阿里云开发者社区推出“5月AIGC挑战赛”,邀您一起畅聊AIGC!
19836 3
|
Web App开发 JSON 前端开发
🎁🎁🎁详解 Web Worker,不再止步于会用!
前面的章节都是告诉你怎么使用Worker,并没有真正的深入Worker的原理,这一章我们就来详细的了解一下Worker的原理。
323 0
🎁🎁🎁详解 Web Worker,不再止步于会用!
|
机器学习/深度学习 编解码 人工智能
【计算机视觉】MaskFormer:将语义分割和实例分割作为同一任务进行训练
目标检测和实例分割是计算机视觉的基本任务,在从自动驾驶到医学成像的无数应用中发挥着关键作用。目标检测的传统方法中通常利用边界框技术进行对象定位,然后利用逐像素分类为这些本地化实例分配类。但是当处理同一类的重叠对象时,或者在每个图像的对象数量不同的情况下,这些方法通常会出现问题。
【计算机视觉】MaskFormer:将语义分割和实例分割作为同一任务进行训练
|
人工智能 大数据 云栖大会
投票赢卫衣,为爱发电VS绩效晋升你选哪一个?
作为一名开发者,还记得你参与开源项目的初心吗?支撑你参与开源的核心动力是“为爱发电”主动为之,还是被绩效、晋升捆绑束缚的无奈之举?你们的声音需要被聆听!欢迎大家扫码进行投票,投票结果将会在云栖大会开发者舞台——「开源人说」大数据&AI专场进行公布,现场还有更多开源话题的深入探讨!
1855 4
投票赢卫衣,为爱发电VS绩效晋升你选哪一个?
|
Cloud Native Dubbo 应用服务中间件
系列征文2|后端领域主题征文开始啦!参与即有奖!
阿里云开发者社区推出“后端技术征文挑战赛”。现面向社区所有开发者征集后端领域技术文章,可以是语言框架的使用技巧,也可以是技术领域的趋势探讨,只要你有干货,那就分享出来!在活动规定时间内前往阿里云开发者社区发文,就有机会获得空气炸锅、社区积分等丰富奖励,参与即可获奖,快来参加吧!
1508 17
系列征文2|后端领域主题征文开始啦!参与即有奖!
|
JSON 前端开发 Java
如何对数据进行脱敏处理?
实际的业务开发过程中,我们经常需要对用户的隐私数据进行脱敏处理,所谓脱敏处理其实就是将数据进行混淆隐藏,例如下图,将用户的手机号、地址等数据信息,采用*进行隐藏,以免泄露个人隐私信息。
1665 0
如何对数据进行脱敏处理?
|
UED
怎么集成短链接生成,短链接的作用
短链接也称为短网址,是指长度较短的URL链接
504 0

热门文章

最新文章