信息学奥赛一本通(C++版)在线评测系统
3439:练76.3 分数线划定
解题思路
- 数据输入:首先读取选手总数
n
和计划录取人数m
,然后依次读取每个选手的报名号和笔试成绩,将这些信息存储在一个合适的数据结构中(这里使用结构体数组)。 - 排序:对存储选手信息的数组按照笔试成绩从高到低排序,如果成绩相同,则按报名号由小到大排序。
- 计算面试分数线:根据计划录取人数
m
计算出排名位置(m * 1.5
向下取整),找到该排名位置的选手的笔试成绩作为面试分数线。 - 统计进入面试的人数:遍历排序后的数组,统计笔试成绩不低于面试分数线的选手人数。
- 输出结果:先输出面试分数线和进入面试的实际人数,然后按要求输出进入面试选手的报名号和笔试成绩。
C++代码实现
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
// 定义选手结构体
struct Player {
int id; // 报名号
int score; // 笔试成绩
};
// 比较函数,用于排序
bool