PAT——1015. 德才论

来源:互联网 发布:域名注册需要备案吗 编辑:程序博客网 时间:2024/06/02 04:26
宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输入第1行给出3个正整数,分别为:N(<=105),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。随后N行,每行给出一位考生的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才分为区间[0, 100]内的整数。数字间以空格分隔。输出格式:输出第1行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。输入样例:14 60 8010000001 64 9010000002 90 6010000011 85 8010000003 85 8010000004 80 8510000005 82 7710000006 83 7610000007 90 7810000008 75 7910000009 59 9010000010 88 4510000012 80 10010000013 90 9910000014 66 60输出样例:1210000013 90 9910000012 80 10010000003 85 8010000011 85 8010000004 80 8510000007 90 7810000006 83 7610000005 82 7710000002 90 6010000014 66 6010000008 75 7910000001 64 90

这道题用到了C++中的STL标准库中的vector容器;其中还有一个点比较坑的是printf的效率比cout的效率要高,这道题如果用cout的话会报超时。

代码如下:

#include <iostream>#include <vector>#include <algorithm>#include <stdio.h>using namespace std;class Stu{public:    int num;    int Ds;    int Cs;};static bool Compare(const Stu &a,const Stu &b){    if((a.Cs+a.Ds)!=(b.Cs+b.Ds))       return (a.Ds+a.Cs)>(b.Ds+b.Cs);    else{        if(a.Ds!=b.Ds)            return a.Ds>b.Ds;        else            return a.num<b.num;    }}int main(){    int n,l,h;    int Count=0;    cin>>n>>l>>h;    Stu a;    vector<Stu>stu1;    vector<Stu>stu2;    vector<Stu>stu3;    vector<Stu>stu4;    for(int i=0;i<n;i++){        cin>>a.num>>a.Ds>>a.Cs;        if(a.Cs>=l&&a.Ds>=l)        {            Count++;            if(a.Ds>=h&&a.Cs>=h)            {                stu1.push_back(a);            }            else if(a.Cs<h&&a.Ds>=h)            {                stu2.push_back(a);            }            else if(a.Ds<h&&a.Cs<h&&a.Ds>=a.Cs)            {                stu3.push_back(a);            }            else            {                stu4.push_back(a);            }        }    }    cout<<Count<<endl;    sort(stu1.begin(),stu1.end(),Compare);    for(auto it=stu1.begin();it!=stu1.end();it++){        //cout<<it->num<<" "<<it->Ds<<" "<<it->Cs<<endl;        printf("%d %d %d\n",it->num,it->Ds,it->Cs);    }    stu1.clear();    sort(stu2.begin(),stu2.end(),Compare);    for(auto it=stu2.begin();it!=stu2.end();it++){        //cout<<it->num<<" "<<it->Ds<<" "<<it->Cs<<endl;        printf("%d %d %d\n",it->num,it->Ds,it->Cs);    }    stu2.clear();    sort(stu3.begin(),stu3.end(),Compare);    for(auto it=stu3.begin();it!=stu3.end();it++){        //cout<<it->num<<" "<<it->Ds<<" "<<it->Cs<<endl;        printf("%d %d %d\n",it->num,it->Ds,it->Cs);    }    stu3.clear();    sort(stu4.begin(),stu4.end(),Compare);    for(auto it=stu4.begin();it!=stu4.end();it++){        //cout<<it->num<<" "<<it->Ds<<" "<<it->Cs<<endl;        printf("%d %d %d\n",it->num,it->Ds,it->Cs);    }    stu4.clear();    return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大臂的图案纹小了怎么办 双面板已经贴片还要插件后焊怎么办 黑板摔在地上有木头屑怎么办 白衣服蓝袖子漂花了怎么办 白衣服泡了一夜袖子发黄怎么办 小孩的胳膊肘关节处摔断开了怎么办 生完孩子以后奶头总有脏东西怎么办 月经有黑乎乎的脏东西下不来怎么办 四季梅叶子打卷花从粉变白怎么办 新移栽的竹子出来太细怎么办 土培富贵竹长得太高了怎么办 毛竹加工厂被环保查了该怎么办? 领养姐姐家的孩子怎么办领养手续 孩子喝了点杯子变质发霉的水怎么办 杯子发霉没洗干净喝了水怎么办 小孩的咪咪头没有突出来怎么办 手被竹子刺了肿了怎么办 紫竹刚栽叶子发枯怎么办能活吗 移栽大田的水稻过施了氮肥怎么办 股骨术后六十天有小量骨痂怎么办 被桃树上的蜂蜜咬了怎么办 照片回收站密码找不回来了怎么办 扣扣空间照片回收站密码忘了怎么办 我眼睛近视了不想戴眼镜怎么办 微信聊天对方只回一个字怎么办 大学室友都不是自己喜欢的人怎么办 超轻粘土粘在衣服上怎么办 粽子昨晚煮好今日发现不够熟怎么办 5岁宝宝左眼轻微散光怎么办光 孩子总吸鼻子但没有鼻涕怎么办 纹完眼线眼睛磨的很难受怎么办 我的脸型眼睛好看牙不好看怎么办 陌陌当日打招呼人数已达上限怎么办 新生婴儿白天睡觉晚上不睡怎么办 被有翅膀的蚂蚁咬了怎么办 被带翅膀的蚂蚁蛰了怎么办 被长翅膀的蚂蚁咬了怎么办 宝宝被带翅膀的蚂蚁咬了怎么办 新的小白鞋鞋子有点夹脚怎么办 单反快门按不下去里面响怎么办 在上海动漫城游戏厅里输了钱怎么办