
'''simple docstring'''



import argparse

import torch

from transformers import OpenAIGPTConfig, OpenAIGPTModel, load_tf_weights_in_openai_gpt
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()



def   _A       (   _lowerCAmelCase  ,   _lowerCAmelCase  ,   _lowerCAmelCase					):



							"""simple docstring"""



							if openai_config_file == "":
														__lowercase       	=OpenAIGPTConfig()
							else:
														__lowercase       	=OpenAIGPTConfig.from_json_file(__snake_case					)
							__lowercase       	=OpenAIGPTModel(__snake_case					)

							# Load weights from numpy
							load_tf_weights_in_openai_gpt(__snake_case  ,   __snake_case  ,   __snake_case					)

							# Save pytorch-model
							__lowercase       	=pytorch_dump_folder_path + '/' + WEIGHTS_NAME
							__lowercase       	=pytorch_dump_folder_path + '/' + CONFIG_NAME
							print(f"""Save PyTorch model to {pytorch_weights_dump_path}"""					)
							torch.save(model.state_dict()  ,   __snake_case					)
							print(f"""Save configuration file to {pytorch_config_dump_path}"""					)
							with open(__snake_case  ,   'w'  ,   encoding='utf-8'					) as f:
														f.write(config.to_json_string()					)


if __name__ == "__main__":
		lowerCamelCase	 =       argparse.ArgumentParser()
		# Required parameters
		parser.add_argument(
		    """--openai_checkpoint_folder_path""",
		    default=None,
		    type=str,
		    required=True,
		    help="""Path to the TensorFlow checkpoint path.""",
		)
		parser.add_argument(
		    """--pytorch_dump_folder_path""", default=None, type=str, required=True, help="""Path to the output PyTorch model."""
		)
		parser.add_argument(
		    """--openai_config_file""",
		    default="""""",
		    type=str,
		    help=(
		        """An optional config json file corresponding to the pre-trained OpenAI model. \n"""
		        """This specifies the model architecture."""
		    ),
		)
		lowerCamelCase	 =       parser.parse_args()
		convert_openai_checkpoint_to_pytorch(
		    args.openai_checkpoint_folder_path, args.openai_config_file, args.pytorch_dump_folder_path
		)








'''simple docstring'''



def   _A       (   _lowerCAmelCase  ,   _lowerCAmelCase  ,   _lowerCAmelCase					):



							"""simple docstring"""



							if len(_lowerCAmelCase					) != len(_lowerCAmelCase					):
														raise ValueError('The length of profit and weight must be same.'					)
							if max_weight <= 0:
														raise ValueError('max_weight must greater than zero.'					)
							if any(p < 0 for p in profit					):
														raise ValueError('Profit can not be negative.'					)
							if any(w < 0 for w in weight					):
														raise ValueError('Weight can not be negative.'					)

							# List created to store profit gained for the 1kg in case of each weight
							# respectively.  Calculate and append profit/weight for each element.
							__lowercase       	=[p / w for p, w in zip(_lowerCAmelCase  ,   _lowerCAmelCase					)]

							# Creating a copy of the list and sorting profit/weight in ascending order
							__lowercase       	=sorted(_lowerCAmelCase					)

							# declaring useful variables
							__lowercase       	=len(_lowerCAmelCase					)
							__lowercase       	=0
							__lowercase       	=0
							__lowercase       	=0

							# loop till the total weight do not reach max limit e.g. 15 kg and till i<length
							while limit <= max_weight and i < length:
														# flag value for encountered greatest element in sorted_profit_by_weight
														__lowercase       	=sorted_profit_by_weight[length - i - 1]
														__lowercase       	=profit_by_weight.index(_lowerCAmelCase					)
														__lowercase       	=-1

														# check if the weight encountered is less than the total weight
														# encountered before.
														if max_weight - limit >= weight[index]:
																					limit += weight[index]
																					# Adding profit gained for the given weight 1 ===
																					# weight[index]/weight[index]
																					gain += 1 * profit[index]
														else:
																					# Since the weight encountered is greater than limit, therefore take the
																					# required number of remaining kgs and calculate profit for it.
																					# weight remaining / weight[index]
																					gain += (max_weight - limit) / weight[index] * profit[index]
																					break
														i += 1
							return gain


if __name__ == "__main__":
		print(
		    """Input profits, weights, and then max_weight (all positive ints) separated by """
		    """spaces."""
		)

		lowerCamelCase	 =       [int(x) for x in input("""Input profits separated by spaces: """).split()]
		lowerCamelCase	 =       [int(x) for x in input("""Input weights separated by spaces: """).split()]
		lowerCamelCase	 =       int(input("""Max weight allowed: """))

		# Function Call
		calc_profit(profit, weight, max_weight)



