package main
import("fmt")funccanEatAll(piles []int, mid int, H int)bool{var sum int=0for i :=0; i <len(piles); i++{
sum = sum +(piles[i]-1)/mid +1}return sum <= H //sum小于H,则表示在守卫回来之前,已经吃完}funcgetArrayMaxium(arr []int)int{
maximum := arr[0]for_, value :=range arr {if maximum < value {
maximum = value
}}return maximum
}funccanEatMinimum(piles []int, H int)int{
lo :=1
hi :=getArrayMaxium(piles[:])
fmt.Println("hi is : ", hi)for lo < hi {
mid :=(lo + hi)/2ifcanEatAll(piles[:], mid, H){
hi = mid
}else{
lo = mid +1}}return lo
}funcmain(){
piles :=[...]int{30,11,23,4,20}
H :=5
minimum :=canEatMinimum(piles[:], H)
fmt.Println("can eat minimum : ", minimum)}