class Solution {
fun splitArray(nums: IntArray, k: Int): Int {
fun canSplit(max: Int): Boolean {
var subArrCnt = 1
var curSum = 0
for (n in nums) {
curSum += n
if (curSum > max) {
subArrCnt++
curSum = n
}
}
return subArrCnt <= k
}
var l = nums.max()!!
var r = nums.sum()!!
var res = r
while (l <= r) {
val m = l + (r - l) / 2
if (canSplit(m)) {
res = m
r = m - 1
} else {
l = m + 1
}
}
return res
}
}