测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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)
上一题 下一题