human
Maximize jobs that can be completed under given constraint | Function to find maxiumum number of jobs.
Min Heap.
Sort ranges by start day.
Stores the minimum and maximum day in the ranges.
Iterating from min_day to max_day.
Insert the end day of the jobs which can be completed on i - th day in a priority queue.
Pop all jobs whose end day is less than current day.
If queue is empty , no job can be completed on the i - th day.
Increment the count of jobs completed.
Pop the job with least end day.
Return the jobs on the last day.
Driver code"
How can the above be solved in Python?
assistant
#Here is code to maximize jobs that can be completed under given constraint and the other steps required.
 def find_maximum_jobs ( N , ranges ) :
	queue = [ ]
	ranges . sort ( )
	min_day = ranges [ 0 ] [ 0 ]
	max_day = 0
	for i in range ( N ) :
	max_day = max ( max_day , ranges [ i ] [ 1 ] )
	index , count_jobs = 0 , 0
	for i in range ( min_day , max_day + 1 ) :
	while ( index < len ( ranges ) and ranges [ index ] [ 0 ] <= i ) :
		queue . append ( ranges [ index ] [ 1 ] )
		index += 1
	queue . sort ( )
	while ( len ( queue ) > 0 and queue [ 0 ] < i ) :
		queue . pop ( 0 )
	if ( len ( queue ) == 0 ) :
		continue
	count_jobs += 1
	queue . pop ( 0 )
	return count_jobs
N = 5
ranges = [ ]
ranges . append ( ( 1 , 5 ) )
ranges . append ( ( 1 , 5 ) )
ranges . append ( ( 1 , 5 ) )
ranges . append ( ( 2 , 3 ) )
ranges . append ( ( 2 , 3 ) )
print ( find_maximum_jobs ( N , ranges ) )