Input: stalls: [1, 2, 4, 8, 9], cows: 3
Goal: Place 3 cows in stalls so that the minimum distance between any two cows is as large as possible.
Step 1: Sort stalls to [1, 2, 4, 8, 9]
Stalls sorted: [1, 2, 4, 8, 9]
Why: Sorting helps us check distances in order.
Step 2: Set search range for minimum distance: low=1, high=8 (max distance between first and last stall)
low=1, high=8
Why: We try distances between 1 and 8.
Step 3: Check mid distance = (1+8)//2 = 4; try placing cows with at least 4 apart
Try distance=4
Why: Check if 4 is possible.
Step 4: Place first cow at stall 1, next at stall 4 (distance 3 < 4 no), so next at stall 8 (distance 7 >=4), third at stall 9 (distance 1 <4 no)
Placed cows at stalls 1 and 8, only 2 cows placed
Why: Only 2 cows placed, need 3, so distance 4 too big.
Step 5: Reduce high to mid-1=3, new range low=1, high=3
low=1, high=3
Why: Try smaller distance.
Step 6: Check mid distance = (1+3)//2 = 2; try placing cows with at least 2 apart
Try distance=2
Why: Check if 2 is possible.
Step 7: Place cows at stalls 1, 4, 8 successfully (distances 3 and 4 >=2)
Placed cows at stalls 1, 4, 8
Why: All 3 cows placed with distance 2.
Step 8: Increase low to mid+1=3, new range low=3, high=3
low=3, high=3
Why: Try bigger distance.
Step 9: Check mid distance = 3; try placing cows with at least 3 apart
Try distance=3
Why: Check if 3 is possible.
Step 10: Place cows at stalls 1, 4, 8 successfully (distances 3 and 4 >=3)
Placed cows at stalls 1, 4, 8
Why: All 3 cows placed with distance 3.
Step 11: Increase low to mid+1=4, new range low=4, high=3 (low > high, stop)
low=4, high=3
Why: No larger distance possible.
Result: Maximum minimum distance is 3
Cows placed at stalls 1, 4, 8