某地举行举重比赛,一共m人参加(参加人数介于1和100之间),规则如下:(1)所举起的重量从高到低排名,(2)所举重量相等时体重轻的胜出,(3)所举重量相等且体重一样时名次相同,某个名次有多人时会占用后续人员的名次(其中名次从1,2,3依次记录)。输入:人数m,接下来m行数据,每行包括两个正整数分别表示所举重量和体重。输出m行数据,每行包含3个整数(名次 所举重量 体重)。
时间: 2023-09-16 20:14:21 浏览: 41
这道题可以使用Python中的排序函数来处理,具体步骤如下:
1. 定义一个元素为(所举重量,体重)的列表,并读入m个元素。
2. 对列表进行排序,首先按照所举重量从大到小排序,然后按照体重从小到大排序。
3. 遍历排序后的列表,统计每个名次的人数并输出。
下面是完整的Python代码实现:
```python
m = int(input())
data = []
for i in range(m):
weight, height = map(int, input().split())
data.append((weight, height))
# 按照所举重量从大到小排序,然后按照体重从小到大排序
data = sorted(data, key=lambda x: (-x[0], x[1]))
# 统计每个名次的人数并输出
rank = [0] * m
for i in range(m):
if i == 0:
rank[i] = 1
elif data[i][0] == data[i-1][0] and data[i][1] == data[i-1][1]:
rank[i] = rank[i-1]
else:
rank[i] = i + 1
print(rank[i], data[i][0], data[i][1])
```
示例输入:
```
5
100 80
90 90
90 80
80 70
80 80
```
示例输出:
```
1 100 80
2 90 80
2 90 90
4 80 70
4 80 80
```