Given courses with duration and deadline, find max number of courses you can take.
Sort by deadline. Use a max-heap: greedily take each course; if taking it exceeds deadline, replace longest course taken so far.
- Sort courses by deadline (last day)
- Use max-heap of durations
- For each course: add it and update current time
- If current time > deadline: remove longest course from heap
- Return heap size
- Time Complexity: O(n log n)
- Space Complexity: O(n)