AcWing 1506. python
原题链接
简单
import sys
def main():
A = list(map(int, input().split()))
B = list(map(int, input().split()))
n = len(A) + len(B)
#题本身有问题 不应该 + 1的
print(findk(A, 0, B, 0, (n + 1)//2 + 1))
def findk(A, A_index, B, B_index, k):
if A_index >= len(A):
return B[B_index + k - 1]
if B_index >= len(B):
return A[A_index + k - 1]
if k == 1:
return min(A[A_index], B[B_index])
mida = A[A_index + k // 2 - 1] if A_index + k // 2 <= len(A) else sys.maxsize
midb = B[B_index + k // 2 - 1] if B_index + k // 2 <= len(B) else sys.maxsize
if mida < midb:
return findk(A, A_index + k // 2, B, B_index, k - k // 2)
else:
return findk(A, A_index, B, B_index + k // 2, k - k // 2)
main()