题解 | 分数线划定

分数线划定

https://www.nowcoder.com/practice/2395fa7b6c6e452e8d8310a7cfdbe902

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    let n = 0;//报名人数
    let m = 0; //计划录取人数
    let t = 0//面试人数
    let p_arr = []
    while (line = await readline()) {
        let tokens = line.split(' ');
        let a = parseInt(tokens[0]);
        let b = parseInt(tokens[1]);
        if (n === 0) {
            n = a;
            m = b
            // Math.floor:向下取整
            // Math.ceil:向上取整
            // Math.round:四舍五入
            t = Math.floor(1.5 * m)
        } else {
            p_arr.push({ 'id': a, 's': b, })
        }
    }

    // 数组排序:成绩从高到低,学号从低到高
    p_arr.sort((a, b) => {
        if (a.s !== b.s) {
            return b.s - a.s//倒序
        } else {
            return a.id - b.id//升序
        }
    })

    // 取第t个人的成绩作为分数线
    let s_line = p_arr[t - 1].s;
    let count = 0;//面试人数

    // 再按分数线取面试人数(处于分数线上的可能有多人),分数>=分数线的人可以进入面试
    while (count < p_arr.length && p_arr[count].s >= s_line) {
        count++;
    }
    // 打印第一行
    console.log(s_line + ' ' + count)

    // 循环打印进入面试的count个人的学号和成绩
    for (let i = 0; i < count; i++) {
        console.log(p_arr[i].id + ' ' + p_arr[i].s)
    }

}()

#虽然0面试,但今天___,夸夸自己#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务