
"""simple docstring"""







from __future__ import annotations

from statistics import mean




def       A_      (       lowercase    ,			lowercase    ,			lowercase   )  ->				list[int]:


     """simple docstring"""







     UpperCAmelCase_    :     Optional[Any]            =	[0] * no_of_processes
     UpperCAmelCase_    :     Dict            =	[0] * no_of_processes

     # Initialize remaining_time to waiting_time.

     for i in range(lowercase   ):
          UpperCAmelCase_    :     int            =	burst_time[i]
     UpperCAmelCase_    :     list[int]            =	[]

     UpperCAmelCase_    :     Any            =	0
     UpperCAmelCase_    :     List[Any]            =	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:
          UpperCAmelCase_    :     List[str]            =	[]
          UpperCAmelCase_    :     Optional[int]            =	-1

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

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

     return waiting_time




def       A_      (       lowercase    ,			lowercase    ,			lowercase   )  ->				list[int]:


     """simple docstring"""







     UpperCAmelCase_    :     Optional[int]            =	[0] * no_of_processes
     for i in range(lowercase   ):
          UpperCAmelCase_    :     str            =	burst_time[i] + waiting_time[i]
     return turn_around_time


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

       lowercase_         =       4
       lowercase_         =       [2, 5, 3, 7]
       lowercase_         =       [0, 0, 0, 0]
       lowercase_         =       calculate_waitingtime(arrival_time, burst_time, no_of_processes)
       lowercase_         =       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}""")



"""simple docstring"""







from string import ascii_lowercase, ascii_uppercase




def       A_      (       lowercase   )  ->				str:


     """simple docstring"""







     if not sentence:
          return ""
     UpperCAmelCase_    :     Any            =	dict(zip(lowercase    ,			lowercase   )   )
     return lower_to_upper.get(sentence[0]    ,			sentence[0]   ) + sentence[1:]


if __name__ == "__main__":
       from doctest import testmod

       testmod()

