Concept Flow - Allocate Minimum Pages Binary Search on Answer
Set low = max(pages array)
Set high = sum(pages array)
While low <= high
Calculate mid = Math.floor((low + high) / 2)
Check if allocation possible with mid
Update high = mid-1
Repeat loop
Return low as minimum max pages
We use binary search on the range of possible max pages to find the minimum max pages per student that allows allocation.