Step 1: Set low to max book pages (400), high to sum of all pages (1000), start binary search
low=400, high=1000
Why: Minimum max pages can't be less than largest book; maximum is sum of all pages
Step 2: Calculate mid = (400 + 1000) / 2 = 700; check if possible to allocate with max 700 pages
Trying max_pages=700
Why: Check feasibility with mid value to narrow search
Step 3: Allocate books: Student 1 gets 100 + 200 + 300 = 600 pages; Student 2 gets 400 pages
Allocation possible with max_pages=700
Why: Sum per student does not exceed 700, so allocation is possible
Step 4: Since allocation possible, set high = mid - 1 = 699 to try smaller max pages
low=400, high=699
Why: Try to find smaller maximum pages
Step 5: Calculate mid = (400 + 699) / 2 = 549; check allocation with max 549
Trying max_pages=549
Why: Narrow search further
Step 6: Allocate books: Student 1 gets 100 + 200 = 300 pages; Student 2 gets 300 pages; next book 400 pages can't fit in max 549 for any student
Allocation not possible with max_pages=549
Why: 400 pages book alone exceeds remaining capacity for student 2
Step 7: Since allocation not possible, set low = mid + 1 = 550
low=550, high=699
Why: Need larger max pages to fit all books
Step 8: Calculate mid = (550 + 699) / 2 = 624; check allocation with max 624
Trying max_pages=624
Step 9: Allocate books: Student 1 gets 100 + 200 + 300 = 600 pages; Student 2 gets 400 pages
Allocation possible with max_pages=624
Why: Sum per student does not exceed 624
Step 10: Set high = mid - 1 = 623 to try smaller max pages
low=550, high=623
Why: Try to minimize max pages further
Step 11: Calculate mid = (550 + 623) / 2 = 586; check allocation with max 586
Trying max_pages=586
Step 12: Allocation not possible (same reason as step 6)
Allocation not possible with max_pages=586
Why: 400 pages book can't fit after previous allocations
Step 13: Set low = mid + 1 = 587
low=587, high=623
Why: Increase minimum max pages
Step 14: Calculate mid = (587 + 623) / 2 = 605; check allocation with max 605
Trying max_pages=605
Step 15: Allocation possible: Student 1 gets 100 + 200 + 300 = 600 pages; Student 2 gets 400 pages
Allocation possible with max_pages=605
Why: Sum per student within limit
Step 16: Set high = mid - 1 = 604
low=587, high=604
Why: Try smaller max pages
Step 17: Calculate mid = (587 + 604) / 2 = 595; check allocation with max 595
Trying max_pages=595
Step 18: Allocation not possible (same reason as step 6)
Allocation not possible with max_pages=595
Why: 400 pages book can't fit
Step 19: Set low = mid + 1 = 596
low=596, high=604
Why: Increase minimum max pages
Step 20: Calculate mid = (596 + 604) / 2 = 600; check allocation with max 600
Trying max_pages=600
Step 21: Allocation possible: Student 1 gets 100 + 200 + 300 = 600 pages; Student 2 gets 400 pages
Allocation possible with max_pages=600
Why: Sum per student within limit
Step 22: Set high = mid - 1 = 599
low=596, high=599
Why: Try smaller max pages
Step 23: Calculate mid = (596 + 599) / 2 = 597; check allocation with max 597
Trying max_pages=597
Step 24: Allocation not possible (same reason as step 6)
Allocation not possible with max_pages=597
Why: 400 pages book can't fit
Step 25: Set low = mid + 1 = 598
low=598, high=599
Why: Increase minimum max pages
Step 26: Calculate mid = (598 + 599) / 2 = 598; check allocation with max 598
Trying max_pages=598
Step 27: Allocation not possible (same reason as step 6)
Allocation not possible with max_pages=598
Why: 400 pages book can't fit
Step 28: Set low = mid + 1 = 599
low=599, high=599
Why: Increase minimum max pages
Step 29: Calculate mid = (599 + 599) / 2 = 599; check allocation with max 599
Trying max_pages=599
Step 30: Allocation not possible (same reason as step 6)
Allocation not possible with max_pages=599
Why: 400 pages book can't fit
Step 31: Set low = mid + 1 = 600
low=600, high=599
Why: low > high means search ends
Result: Minimum maximum pages = 600
Final allocation: Student 1: [100, 200, 300], Student 2: [400]