题解 | 分数线划定
分数线划定
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面试,但今天___,夸夸自己#