We use cookies for site analytics. Accept to help us understand how the site is used. See our Privacy Policy for details.
A hard binary search problem, graded against 5 test cases (2 of them hidden).
Halving a search space each step - on sorted arrays, and on answers themselves.
Reach for it when you see: A sorted input, or a monotonic "is this value feasible?" predicate you can binary search over.
More Binary Searchproblems →Sort envelopes by width ascending. For equal widths, break the tie by sorting heights *descending* - this way an LIS over the height array can never pick two envelopes that share a width (the second would need a strictly larger height, but the descending tie-break placed the larger height first).
Then run the standard patience-sort LIS on the heights:
- Maintain a tails array where `tails[i]` is the smallest height ending an increasing subsequence of length i+1.
- For each height, binary-search the leftmost slot whose value `>= h` and overwrite it.
- The answer is `tails.length`.
The full reference solution in every supported language stays in the editor above - reveal it there once you have had a real attempt.
Read off this problem's own test suite, so these are the cases a submission actually has to survive.
These apply to the pattern as a whole, not just this problem.