|
发表于 2023-7-29 22:04:36
|
显示全部楼层
根据题目描述,我们需要编写一个程序来确定进入第二轮的分数线,并输出所有进入第二轮的选手的报名号和第一轮成绩。
以下是解题步骤:
1. 读取输入的两个整数 n 和 m(分别表示选手总数和计划获奖人数)。
2. 计算出分数线的排名 thresh = n * 150% / m。
3. 创建一个列表 scores,用于存储每个选手的报名号和第一轮成绩。
4. 读取 n 行输入,将每个选手的报名号和第一轮成绩添加到 scores 列表中。
5. 对 scores 列表按照第一轮成绩从高到低进行排序,如果成绩相同,则按照报名号由小到大进行排序。
6. 输出分数线 thresh 和进入第二轮的选手人数 count = min(m, n)。
7. 输出前 count 行,每行包含选手的报名号和第一轮成绩。
下面是实现该算法的Python代码:
- n, m = map(int, input().split())
- thresh = n * 150 // m
- scores = []
- for _ in range(n):
- k, s = map(int, input().split())
- scores.append((k, s))
- scores.sort(key=lambda x: (-x[1], x[0])) # 按照成绩降序、报名号升序排序
- count = min(m, n)
- print(thresh, count)
- for i in range(count):
- print(scores[ i][0], scores[ i][1])
复制代码
希望以上代码和解题步骤对你有帮助!如果有任何疑问,请随时提问。
如果问题已经解决,请设置最佳答案 |
|