← Back to List

2343번: 기타 레슨 ↗

Solutions

Python 3
413 B | 413 chars
n, m = map(int, input().split())

l = [*map(int, input().split())]

s = max(l)
e = 100000000000
ans = 2 * e

while s <= e:
    mid = (s + e) // 2
    
    cnt = 1
    crt = l[0]
    
    for i in l[1:]:
        if crt + i <= mid:
            crt += i
        else:
            crt = i
            cnt += 1

    if cnt > m:
        s = mid + 1
    else:
        ans = min(ans, mid)
        e = mid - 1

print(ans)