1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| def allocatManPower(m: int, requirements: list[int]) -> int: sorted(requirements) left, right = requirements[-1], requirements[-1] + requirements[-2]
while left < right: mid = (left + right) // 2 if check(mid, requirements, m): right = mid else: left = mid + 1 return left
def check(mid: int, requirements: list[int], m: int) -> bool: needs = 0 left, right = 0, len(requirements) - 1 while left <= right: if requirements[left] + requirements[right] <= mid: left += 1 right -= 1 else: right -= 1 needs += 1 return needs <= m
if __name__ == "__main__": m = int(input()) requirements = list(map(int, input().split())) print(allocatManPower(m, requirements))
|