# your code goes here
def median(arr1, arr2):
def helper(arr1, arr2, l1, h1, l2, h2):
print(arr1, arr2, l1, h1, l2, h2, arr1[l1:h1+1], arr2[l2:h2+1])
if max(h1-l1, 0) + max(h2-l2, 0) <= 0:
return min(arr1[l1:h1+1] + arr2[l2:h2+1])
print(f'test values: {arr1[l1:l1+1]} < {arr2[l2:l2+1]} = {arr1[l1:l1+1] < arr2[l2:l2+1]}, {arr1[h1:h1+1]} > {arr2[h2:h2+1]} = {arr1[h1:h1+1] > arr2[h2:h2+1]}')
if arr1[l1:l1+1] < arr2[l2:l2+1] or len(arr2[l2:l2+1]) == 0:
if arr1[h1:h1+1] > arr2[h2:h2+1] or len(arr2[h2:h2+1]) == 0:
return helper(arr1, arr2, l1+1, h1-1, l2, h2)
else:
return helper(arr1, arr2, l1+1, h1, l2, h2-1)
else:
if arr2[h2:h2+1] > arr1[h1:h1+1] or len(arr1[h1:h1+1]) == 0:
return helper(arr1, arr2, l1, h1, l2+1, h2-1)
else:
return helper(arr1, arr2, l1, h1-1, l2+1, h2)
return helper(arr1, arr2, 0, len(arr1)-1, 0, len(arr2)-1)
median([1, 2, 3, 4, 12], [0, 7, 8, 11])
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCmRlZiBtZWRpYW4oYXJyMSwgYXJyMik6CiAgICBkZWYgaGVscGVyKGFycjEsIGFycjIsIGwxLCBoMSwgbDIsIGgyKToKICAgICAgICBwcmludChhcnIxLCBhcnIyLCBsMSwgaDEsIGwyLCBoMiwgYXJyMVtsMTpoMSsxXSwgYXJyMltsMjpoMisxXSkKICAgICAgICBpZiBtYXgoaDEtbDEsIDApICsgbWF4KGgyLWwyLCAwKSA8PSAwOgogICAgICAgICAgICByZXR1cm4gbWluKGFycjFbbDE6aDErMV0gKyBhcnIyW2wyOmgyKzFdKQogICAgICAgIHByaW50KGYndGVzdCB2YWx1ZXM6IHthcnIxW2wxOmwxKzFdfSA8IHthcnIyW2wyOmwyKzFdfSA9IHthcnIxW2wxOmwxKzFdIDwgYXJyMltsMjpsMisxXX0sIHthcnIxW2gxOmgxKzFdfSA+IHthcnIyW2gyOmgyKzFdfSA9IHthcnIxW2gxOmgxKzFdID4gYXJyMltoMjpoMisxXX0nKQogICAgICAgIGlmIGFycjFbbDE6bDErMV0gPCBhcnIyW2wyOmwyKzFdIG9yIGxlbihhcnIyW2wyOmwyKzFdKSA9PSAwOgogICAgICAgICAgICBpZiBhcnIxW2gxOmgxKzFdID4gYXJyMltoMjpoMisxXSBvciBsZW4oYXJyMltoMjpoMisxXSkgPT0gMDoKICAgICAgICAgICAgICAgIHJldHVybiBoZWxwZXIoYXJyMSwgYXJyMiwgbDErMSwgaDEtMSwgbDIsIGgyKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIGhlbHBlcihhcnIxLCBhcnIyLCBsMSsxLCBoMSwgbDIsIGgyLTEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgYXJyMltoMjpoMisxXSA+IGFycjFbaDE6aDErMV0gb3IgbGVuKGFycjFbaDE6aDErMV0pID09IDA6CiAgICAgICAgICAgICAgICByZXR1cm4gaGVscGVyKGFycjEsIGFycjIsIGwxLCBoMSwgbDIrMSwgaDItMSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBoZWxwZXIoYXJyMSwgYXJyMiwgbDEsIGgxLTEsIGwyKzEsIGgyKQogICAgCiAgICByZXR1cm4gaGVscGVyKGFycjEsIGFycjIsIDAsIGxlbihhcnIxKS0xLCAwLCBsZW4oYXJyMiktMSkKCm1lZGlhbihbMSwgMiwgMywgNCwgMTJdLCBbMCwgNywgOCwgMTFdKQ==
[1, 2, 3, 4, 12] [0, 7, 8, 11] 0 4 0 3 [1, 2, 3, 4, 12] [0, 7, 8, 11]
test values: [1] < [0] = False, [12] > [11] = True
[1, 2, 3, 4, 12] [0, 7, 8, 11] 0 3 1 3 [1, 2, 3, 4] [7, 8, 11]
test values: [1] < [7] = True, [4] > [11] = False
[1, 2, 3, 4, 12] [0, 7, 8, 11] 1 3 1 2 [2, 3, 4] [7, 8]
test values: [2] < [7] = True, [4] > [8] = False
[1, 2, 3, 4, 12] [0, 7, 8, 11] 2 3 1 1 [3, 4] [7]
test values: [3] < [7] = True, [4] > [7] = False
[1, 2, 3, 4, 12] [0, 7, 8, 11] 3 3 1 0 [4] []