• [NOIP2009普及]分数线划定 T2 排序


    Description

      世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定, 即如果计划录取m名志愿者, 则面试分数线为排名第m*150% 
    (向下取整) 名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。 
    现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。

    Input

      第一行,两个整数 n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n) ,中间用一个空格隔开,其中 n 表示报名参加笔试的选手总数,m表示计划录取的志愿者人数。输入数据保证 m*150%向下取整后小于等于 n。 
    第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号 k(1000 ≤ k ≤ 9999)和该选手的笔试成绩 s(1 ≤ s ≤ 100) 。数据保证选手的报名号各不相同。 

    Output

     第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。 
    从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。 

    Sample Input

    6 3
    1000 90
    3239 88
    2390 95
    7231 84
    1005 95
    1001 88

    Sample Output

    88 5
    1005 95
    2390 95
    1000 90
    1001 88
    3239 88

    HINT

    【样例说明】 
    m*150% = 3*150% = 4.5,向下取整后为 4。保证4个人进入面试的分数线为 88,但因为 88有重分,所以所有成绩大于等于 88的选手都可以进入面试,故最终有 5 个人进入面试。

    Solution

    一道结构体排序题,先按成绩排序,如果成绩相同则按编号排序,算出分数线依次输出即可。

    Code

    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    struct note
    {
        int num;
        int score;
    }prt[5050];
    bool cmp(const note &a,const note &b)
    {
        return a.score!=b.score?a.score>b.score:a.num<b.num;
        //结构体排序
    }
    int down(int x)
    {
        return x*3/2;
        //计算作为分数线的人的排名
    }
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&prt[i].num,&prt[i].score);
        sort(prt+1,prt+n+1,cmp);//结构体排序
        int std=prt[down(m)].score;//分数线
        int ans=0;
        for(int i=1;i<=n;i++)
            if(std<=prt[i].score)
                ans++;//过线的人数
        printf("%d %d\n",std,ans);
        for(int i=1;i<=ans-1;i++)
            printf("%d %d\n",prt[i].num,prt[i].score);
        printf("%d %d",prt[ans].num,prt[ans].score);
    }
  • 相关阅读:
    redis_03 _ 高性能IO模型:为什么单线程Redis能那么快
    redis_02 _ 数据结构:快速的Redis有哪些慢操作?
    redis-01 _ 基本架构:一个键值数据库包含什么?
    mysql_28 _ 读写分离有哪些坑
    mysql_27 _ 主库出问题了,从库怎么办
    小程序的转发功能
    简单几何(求交点) UVA 11178 Morley's Theorem
    测试开发CICD——Docker——windows8上环境安装
    测试开发进阶——spring boot——MVC——MyBatis初步了解(转载)
    BZOJ 2226 [Spoj 5971] LCMSum
  • 原文地址:https://www.cnblogs.com/kanbokedeshiwoerzi/p/8746959.html
Copyright © 2020-2023  润新知