Editorial for Hardcore Grinding
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
This is a simpler version of the classic task-scheduling problem.
The original problem is very similar, given tasks, each with a start time and a finish time , what is the minimum amount of machines needed to accomplish all tasks, if each machine can only do task at a time.
The solution is to first sort the tasks by their start time, which this problem has already provided. Then we just need to find the time with the most overlaps.
To find the most overlaps, think of an interval , as adding a (task) throughout the interval. Then this resembles the difference array update problem. We can use a difference array to keep track of how many overlaps we have, by simply adding one at and subtracting one at . Notice how it is and not , this is because a task only occupies the range . Then simply run prefix sum, then find the max value in the difference array, that will be the maximum number of overlaps, and the minimum amount of machines needed.
Also keep in mind that the ranges and are quite small, so we can store them in a difference array, if they were up to , we would need coordinate compression to avoid MLE.
Time Complexity:
Comments