• NOIP2009分数线划定【B004】


    【B004】分数线划定【难度B】——————————————————————————————————————————————————————————————————————————

    【题目要求】

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

    【输入要求】

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

    【输入示例】

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

    【输出要求】

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

    【输出示例】

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

    【试题分析】

    m*150%=3*150%=4.5,向下取整后为4。保证4个人进入面试的分数线为88,但因为88有重分,所以所有成绩大于等于88的选手都可以进入面试,故最终有5个人进入面试。我们可以先建一个数据结构体,然后通过运算符重载后的sort函数对数据结构体进行排序,这样这道题的代码就可以既简介又易于理解的写出来了。

    【代码】

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #define maxn 5000
    
    using namespace std;
    
    int n,m,i,j,k;
    struct data
    {
        int x,y;         
        
    }a[maxn+50];
    bool cmp(data p,data q)
    {
        if(p.y>q.y)return 1;
        if(p.y<q.y)return 0;
        return p.x<q.x;
    }
    int main()
    {
        cin>>n>>m;
        for(i=1;i<=n;i++) 
        {
            cin>>a[i].x>>a[i].y;
        }
        sort(a+1,a+n+1,cmp);
        k=m*3/2,j=a[k].y;
        cout<<j<<" ";
        for(i=k+1;i<=n;i++) 
        {
            if(a[i].y<j)
            {
                cout<<i-1<<endl;
                break;
            }
        }
        if(i>n) cout<<n<<endl;  
        for(i=1;i<=n;i++)
        {    
            if(a[i].y>=j)cout<<a[i].x<<" "<<a[i].y<<endl;
            else break;
        }
        //system("pause");
        return 0;
    }
    

     版权所有,转发必须标明出处,否则必须找事。

  • 相关阅读:
    正则表达式match方法和search方法
    正则表达式(基础篇1)
    动画
    重绘和重排(回流)
    数组常用的10个方法
    css3只需一招,将网站变成灰色的
    Python-类的几种调用方法
    Codeforces Global Round 8 C. Even Picture(构造)
    Codeforces Global Round 8 D. AND, OR and square sum(位运算)
    Codeforces Round #650 (Div. 3) C. Social Distance
  • 原文地址:https://www.cnblogs.com/lijiaxin-blog-cpp/p/5137087.html
Copyright © 2020-2023  润新知