数列分段2
要判断单个元素是否超过阈值。
n,m = map(int,input().split())
a = [0] + list(map(int,input().split()))
r = sum(a)
l = 1
s = [0] * (n + 1)
for i in range(1,n + 1):
s[i] = a[i] + s[i - 1]
def check(mid):
i = 1 # 当前元素下标
last = 0 # 上一段结尾元素的下标
part = 1 # 目前在第几段
while i <= n: # 保证数组不越界
if s[i] - s[last] <= mid:
i = i + 1
else:
if s[i] - s[i - 1] > mid:
return False
last = i - 1
part = part + 1
if part <= m:
return True
else:
return False
while l < r:
mid = (l + r) // 2
if check(mid):
r = mid
else:
l = mid + 1
print(r)