def check(mid, arr, max_moves):
count = 0
for num in arr:
if num % mid == 0:
count += num // mid
else:
count += num // mid + 1
return max_moves >= count
def solve(arr, max_moves):
low = 1
high = max(arr)
ans = -1
while low <= high:
mid = (low + high) // 2
if check(mid, arr, max_moves):
ans = mid
high = mid - 1
else:
low = mid + 1
return ans
ZGVmIGNoZWNrKG1pZCwgYXJyLCBtYXhfbW92ZXMpOgogICAgY291bnQgPSAwCiAgICBmb3IgbnVtIGluIGFycjoKICAgICAgICBpZiBudW0gJSBtaWQgPT0gMDoKICAgICAgICAgICAgY291bnQgKz0gbnVtIC8vIG1pZAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvdW50ICs9IG51bSAvLyBtaWQgKyAxCiAgICAgICAgICAgIAogICAgcmV0dXJuIG1heF9tb3ZlcyA+PSBjb3VudAoKZGVmIHNvbHZlKGFyciwgbWF4X21vdmVzKToKICAgIGxvdyA9IDEKICAgIGhpZ2ggPSBtYXgoYXJyKQogICAgYW5zID0gLTEKICAgIAogICAgd2hpbGUgbG93IDw9IGhpZ2g6CiAgICAgICAgbWlkID0gKGxvdyArIGhpZ2gpIC8vIDIKICAgICAgICAKICAgICAgICBpZiBjaGVjayhtaWQsIGFyciwgbWF4X21vdmVzKToKICAgICAgICAgICAgYW5zID0gbWlkCiAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbG93ID0gbWlkICsgMQogICAgICAgICAgICAKICAgIHJldHVybiBhbnM=