diff --git a/kt/minimized-maximum-of-products-distributed-to-any-store.kt b/kt/minimized-maximum-of-products-distributed-to-any-store.kt new file mode 100644 index 0000000..74f9a16 --- /dev/null +++ b/kt/minimized-maximum-of-products-distributed-to-any-store.kt @@ -0,0 +1,43 @@ +class Solution { + private fun canDistribute( + n: Int, + quantities: IntArray, + pivot: Int, + ): Boolean { + var j = 0 + var remaining = quantities[j] + + return (1..n).any { + if (remaining <= pivot) { + j += 1 + if (j == quantities.size) { + return@any true + } + + remaining = quantities[j] + } else { + remaining -= pivot + } + + return@any false + } + } + + fun minimizedMaximum( + n: Int, + quantities: IntArray, + ): Int { + var (left, right) = 0 to quantities.max() + + while (left < right) { + val middle = (left + right) / 2 + if (canDistribute(n, quantities, middle)) { + right = middle + } else { + left = middle + 1 + } + } + + return left + } +}