
"""simple docstring"""
import sys

SCREAMING_SNAKE_CASE_					     =	(
    '''73167176531330624919225119674426574742355349194934'''
    '''96983520312774506326239578318016984801869478851843'''
    '''85861560789112949495459501737958331952853208805511'''
    '''12540698747158523863050715693290963295227443043557'''
    '''66896648950445244523161731856403098711121722383113'''
    '''62229893423380308135336276614282806444486645238749'''
    '''30358907296290491560440772390713810515859307960866'''
    '''70172427121883998797908792274921901699720888093776'''
    '''65727333001053367881220235421809751254540594752243'''
    '''52584907711670556013604839586446706324415722155397'''
    '''53697817977846174064955149290862569321978468622482'''
    '''83972241375657056057490261407972968652414535100474'''
    '''82166370484403199890008895243450658541227588666881'''
    '''16427171479924442928230863465674813919123162824586'''
    '''17866458359124566529476545682848912883142607690042'''
    '''24219022671055626321111109370544217506941658960408'''
    '''07198403850962455444362981230987879927244284909188'''
    '''84580156166097919133875499200524063689912560717606'''
    '''05886116467109405077541002256983155200055935729725'''
    '''71636269561882670428252483600823257530420752963450'''
)

def  lowercase     (_lowerCAmelCase = N						):
						__lowerCAmelCase     =  -sys.maxsize - 1
						for i in range(len(_lowerCAmelCase						) - 12						):
												__lowerCAmelCase     =  1
												for j in range(13						):
																		product *= int(n[i + j]						)
												if product > largest_product:
																		__lowerCAmelCase     =  product
						return largest_product


if __name__ == "__main__":
			print(F"{solution() = }")


"""simple docstring"""
from __future__ import annotations

from statistics import mean

def  lowercase     (_lowerCAmelCase ,    _lowerCAmelCase ,    _lowerCAmelCase						):
						__lowerCAmelCase     =  [0] * no_of_processes
						__lowerCAmelCase     =  [0] * no_of_processes

						# Initialize remaining_time to waiting_time.

						for i in range(_lowerCAmelCase						):
												__lowerCAmelCase     =  burst_time[i]
						__lowerCAmelCase     =  []

						__lowerCAmelCase     =  0
						__lowerCAmelCase     =  0

						# When processes are not completed,
						# A process whose arrival time has passed \
						# and has remaining execution time is put into the ready_process.
						# The shortest process in the ready_process, target_process is executed.

						while completed != no_of_processes:
												__lowerCAmelCase     =  []
												__lowerCAmelCase     =  -1

												for i in range(_lowerCAmelCase						):
																		if (arrival_time[i] <= total_time) and (remaining_time[i] > 0):
																								ready_process.append(_lowerCAmelCase						)

												if len(_lowerCAmelCase						) > 0:
																		__lowerCAmelCase     =  ready_process[0]
																		for i in ready_process:
																								if remaining_time[i] < remaining_time[target_process]:
																														__lowerCAmelCase     =  i
																		total_time += burst_time[target_process]
																		completed += 1
																		__lowerCAmelCase     =  0
																		__lowerCAmelCase     =  (
																		    total_time - arrival_time[target_process] - burst_time[target_process]
																		)
												else:
																		total_time += 1

						return waiting_time

def  lowercase     (_lowerCAmelCase ,    _lowerCAmelCase ,    _lowerCAmelCase						):
						__lowerCAmelCase     =  [0] * no_of_processes
						for i in range(_lowerCAmelCase						):
												__lowerCAmelCase     =  burst_time[i] + waiting_time[i]
						return turn_around_time


if __name__ == "__main__":
			print('''[TEST CASE 01]''')

			SCREAMING_SNAKE_CASE_					     =	4
			SCREAMING_SNAKE_CASE_					     =	[2, 5, 3, 7]
			SCREAMING_SNAKE_CASE_					     =	[0, 0, 0, 0]
			SCREAMING_SNAKE_CASE_					     =	calculate_waitingtime(arrival_time, burst_time, no_of_processes)
			SCREAMING_SNAKE_CASE_					     =	calculate_turnaroundtime(
			    burst_time, no_of_processes, waiting_time
			)

			# Printing the Result
			print('''PID\tBurst Time\tArrival Time\tWaiting Time\tTurnaround Time''')
			for i, process_id in enumerate(list(range(1, 5))):
						print(
						    F"{process_id}\t{burst_time[i]}\t\t\t{arrival_time[i]}\t\t\t\t"
						    F"{waiting_time[i]}\t\t\t\t{turn_around_time[i]}"
						)
			print(F"\nAverage waiting time = {mean(waiting_time):.5f}")
			print(F"Average turnaround time = {mean(turn_around_time):.5f}")
