贪心
经过数学推导, 可以发现, 如果将大臣们安装左手右手数字的乘积进行排序的话, 答案最小.
注意, 分到最多金币的大臣不一定是最后一个大臣, 因此, 需要计算每个大臣分到的金币.
使用Python的好处在这题得到了体现, 不需要手动进行高精计算.
时间复杂度
每个大数计算的时间复杂度为O(N), 因此, 总共的时间复杂度为O(N^2)
Python 代码
n = int(input())
king_left, king_right = map(int, input().split())
A = []
for _ in range(n):
a, b = map(int, input().split())
A.append((a * b, a, b))
A.sort()
ans = 0
m = king_left
for i in range(n):
ans = max(ans, m // A[i][2])
m *= A[i][1]
print(ans)