There's no array to search here — the search space is every possible eating speed,
from 1 to the largest pile. canFinish(speed) is monotonic: if a slow speed finishes
in time, so does every faster one. That monotonicity is what makes binary search valid on an
answer space instead of an array.