KOKO EATS ONE PILE PER HOUR AT A CHOSEN SPEED. FIND THE SMALLEST SPEED THAT STILL CLEARS EVERY PILE WITHIN H HOURS. A FASTER SPEED ALWAYS FITS, SO BINARY SEARCH THE SPEEDS AND HALVE THE RANGE EACH GUESS.
EVERY SPEED EITHER CLEARS THE PILES IN TIME OR RUNS OUT OF HOURS, AND ONCE A SPEED FITS, EVERY FASTER SPEED FITS TOO. THAT SORTED YES OR NO LETS BINARY SEARCH CLOSE IN ON THE TIPPING POINT INSTEAD OF TRYING EVERY SPEED.
ONE SPEED AT A TIME. BLUE LO AND PINK HI FENCE THE LIVE SPEEDS, GREEN MID IS THE GUESS. THE DIMMED TILES ARE RULED OUT, THE GOLD TILE IS THE ANSWER.
1def min_eating_speed(piles, h):2 l = 13 r = max(piles)4 while l < r:5 m = l + (r - l) // 26 hours = sum(-(-p // m) for p in piles)7 if hours <= h:8 r = m9 else:10 l = m + 111 return l
M IS THE TALLEST PILE. BINARY SEARCH TAKES ABOUT LOG M PROBES, AND EACH PROBE SUMS THE HOURS OVER ALL N PILES.
JUST THE TWO BOUNDS LO AND HI PLUS THE PROBE MID.