






"""simple docstring"""







from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


__a							:						Optional[Any]   							=			{
    'configuration_openai': ['OPENAI_GPT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'OpenAIGPTConfig'],
    'tokenization_openai': ['OpenAIGPTTokenizer'],
}

try:
	if not is_tokenizers_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__a							:						Dict   							=			['OpenAIGPTTokenizerFast']

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__a							:						List[Any]   							=			[
	    'OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'OpenAIGPTDoubleHeadsModel',
	    'OpenAIGPTForSequenceClassification',
	    'OpenAIGPTLMHeadModel',
	    'OpenAIGPTModel',
	    'OpenAIGPTPreTrainedModel',
	    'load_tf_weights_in_openai_gpt',
	]

try:
	if not is_tf_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__a							:						int   							=			[
	    'TF_OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'TFOpenAIGPTDoubleHeadsModel',
	    'TFOpenAIGPTForSequenceClassification',
	    'TFOpenAIGPTLMHeadModel',
	    'TFOpenAIGPTMainLayer',
	    'TFOpenAIGPTModel',
	    'TFOpenAIGPTPreTrainedModel',
	]


if TYPE_CHECKING:
	from .configuration_openai import OPENAI_GPT_PRETRAINED_CONFIG_ARCHIVE_MAP, OpenAIGPTConfig
	from .tokenization_openai import OpenAIGPTTokenizer

	try:
		if not is_tokenizers_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .tokenization_openai_fast import OpenAIGPTTokenizerFast

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_openai import (
		    OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    OpenAIGPTDoubleHeadsModel,
		    OpenAIGPTForSequenceClassification,
		    OpenAIGPTLMHeadModel,
		    OpenAIGPTModel,
		    OpenAIGPTPreTrainedModel,
		    load_tf_weights_in_openai_gpt,
		)

	try:
		if not is_tf_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_tf_openai import (
		    TF_OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    TFOpenAIGPTDoubleHeadsModel,
		    TFOpenAIGPTForSequenceClassification,
		    TFOpenAIGPTLMHeadModel,
		    TFOpenAIGPTMainLayer,
		    TFOpenAIGPTModel,
		    TFOpenAIGPTPreTrainedModel,
		)

else:
	import sys

	__a							:						str   							=			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)



from __future__ import annotations

from statistics import mean


def SCREAMING_SNAKE_CASE					(  lowercase_:						list[int]					):
       _UpperCamelCase  :							str	    =	2
       _UpperCamelCase  :							Optional[int]	    =	list(lowercase_					)
       _UpperCamelCase  :							Union[str, Any]	    =	[0] * len(lowercase_					)
       _UpperCamelCase  :							List[str]	    =	0
       while True:
              _UpperCamelCase  :							List[str]	    =	True
              for i, burst_time in enumerate(lowercase_					):
                     if rem_burst_times[i] > 0:
                            _UpperCamelCase  :							List[str]	    =	False
                            if rem_burst_times[i] > quantum:
                                   t += quantum
                                   rem_burst_times[i] -= quantum
                            else:
                                   t += rem_burst_times[i]
                                   _UpperCamelCase  :							str	    =	t - burst_time
                                   _UpperCamelCase  :							Union[str, Any]	    =	0
              if done is True:
                     return waiting_times


def SCREAMING_SNAKE_CASE					(  lowercase_:						list[int]		,    lowercase_:						list[int]					):
       return [burst + waiting for burst, waiting in zip(lowercase_		,    lowercase_					)]


if __name__ == "__main__":
 UpperCAmelCase      		=					[3, 5, 7]
 UpperCAmelCase      		=					calculate_waiting_times(burst_times)
 UpperCAmelCase      		=					calculate_turn_around_times(burst_times, waiting_times)
 print('''Process ID \tBurst Time \tWaiting Time \tTurnaround Time''')
 for i, burst_time in enumerate(burst_times):
  print(
      f'''  {i + 1}\t\t  {burst_time}\t\t  {waiting_times[i]}\t\t  '''
      f'''{turn_around_times[i]}'''
  )
 print(f'''\nAverage waiting time = {mean(waiting_times):.5f}''')
 print(f'''Average turn around time = {mean(turn_around_times):.5f}''')



