// /**
// * @param {number[]} piles
// * @param {number} H
// * @return {number}
// */
var minEatingSpeed = function (piles, H) {
const isPossibleK = (k) => {
let t = 0
for (const pile of piles) {
t += Math.ceil(pile / k)
}
return t <= H
}
let max = Math.max(...piles)
min = 0
while (min < max) {
mid = Math.floor((min + max) / 2)
if (!isPossibleK(mid)) {
min = mid + 1
} else max = mid
}
return min
}
let piles = [30, 11, 23, 4, 20],
H = 5
//Test cases
console.log(minEatingSpeed(piles, H))
piles = [30, 11, 23, 4, 20]
H = 6
console.log(minEatingSpeed(piles, H))
piles = [
332484035,
524908576,
855865114,
632922376,
222257295,
690155293,
112677673,
679580077,
337406589,
290818316,
877337160,
901728858,
679284947,
688210097,
692137887,
718203285,
629455728,
941802184,
]
h = 823855818
console.log(minEatingSpeed(piles, H))