志愿者模拟分数线

欧大百科书 · 2024-12-27 04:23:42

志愿者模拟分数线的划定方法如下:

确定面试分数线

面试分数线是根据计划录取人数的150%划定的。

如果计划录取的志愿者人数为 ( m ),则面试分数线为排名第 ( m times 150% ) (向下取整) 名的选手的分数。

计算实际进入面试的人数

最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。

示例

假设计划录取的志愿者人数为 ( m ),则面试分数线为排名第 ( m times 150% ) (向下取整) 名的选手的分数。例如,如果 ( m = 4 ),则 ( m times 150% = 6 ),向下取整为4,因此面试分数线为排名第4名的选手的分数。

输入输出格式

输入

第一行:两个整数 ( n ) 和 ( m )(( 5 leq n leq 5000 ),( 3 leq m leq n )),中间用一个空格隔开。

第二行到第 ( n+1 ) 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号 ( k ) (1000 ≤ ( k ) ≤ 9999) 和该选手的笔试成绩 ( s ) (1 ≤ ( s ) ≤ 100)。

输出

第一行:两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。

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

代码示例(C++)

```cpp

include

include

include

using namespace std;

int main() {

int n, m;

cin >> n >> m;

vector> scores(n);

for (int i = 0; i < n; ++i) {

int k, s;

cin >> k >> s;

scores[i] = {k, s};

}

// Sort scores by score in descending order, then by k in ascending order

sort(scores.begin(), scores.end(), [](const pair& a, const pair& b) {

return a.second > b.second || (a.second == b.second && a.first < b.first);

});

int interviewLine = scores[m * 150 / 100 - 1].second;

int actualInterviewees = 0;

for (const auto& score : scores) {

if (score.second >= interviewLine) {

++actualInterviewees;

}

}

cout << interviewLine << " " << actualInterviewees << endl;

for (const auto& score : scores) {

if (score.second >= interviewLine) {

cout << score.first << " " << score.second << endl;

}

}

return 0;

}

```

这个代码示例读取输入数据,对笔试成绩进行排序,计算并输出面试分数线和实际进入面试的人数。

相关推荐

(c)2008-2025 广知网 All Rights Reserved 鄂ICP备2023002720号-19