A26809. 排序
填空题
较难
知识点
题目描述
排序
题目描述
体育课上有 n 名同学排成一队,从前往后数第 i 位同学的身高为 hi,体重为 wi 。目前排成的队伍看起来参差不齐,老师希望同学们能按照身高从高到低的顺序排队,如果身高相同则按照体重从重到轻排序。在调整队伍时,每次只能交换相邻两位同学的位置。老师想知道,最少需要多少次交换操作,才能将队伍调整成目标顺序。
输入格式
第一行,一个正整数 n,表示队伍人数。
接下来 n 行,每行两个正整数 hi 和 wi ,分别表示第 i 位同学的身高和体重。
输出格式
输出一行,一个整数,表示最少需要的交换次数。
样例
输入样例 1
5
1 60
3 70
2 80
4 55
4 50输出样例 1
8 输入样例 2
5
4 0
4 0
2 0
3 0
1 0输出样例 2
1数据范围
对于所有测试点,保证 1≤ n ≤3000,0≤ hi,wi ≤109。
参考答案
n = int(input().strip())
a = []
for _ in range(n):
h, w = map(int, input().split())
a.append((h, w))
# 统计最终的交换次数
ans = 0
# 统计是否还需要继续排序
flag = True
while flag:
flag = False
i = 0
while i < n - 1:
if a[i] < a[i + 1]:
# 只要发生过一次交换,就还需要继续排序
flag = True
a[i], a[i + 1] = a[i + 1], a[i]
ans += 1
i += 1
print(ans)
上一题
下一题