


'''simple docstring'''



from bisect import bisect
from itertools import accumulate







def     _UpperCamelCase      (		UpperCamelCase__ ,      UpperCamelCase__ ,      UpperCamelCase__ ,      UpperCamelCase__					):
			UpperCAmelCase__  :					str        =     sorted(zip(UpperCamelCase__ ,      UpperCamelCase__					) ,      key=lambda UpperCamelCase__					: x[0] / x[1] ,      reverse=UpperCamelCase__					)
			UpperCAmelCase__  :					List[str]        =     [i[0] for i in r], [i[1] for i in r]
			UpperCAmelCase__  :					Any        =     list(accumulate(UpperCamelCase__					)					)
			UpperCAmelCase__  :					Optional[Any]        =     bisect(UpperCamelCase__ ,      UpperCamelCase__					)
			return (
			    0
			    if k == 0
			    else sum(vl[:k]					) + (w - acc[k - 1]) * (vl[k]) / (wt[k])
			    if k != n
			    else sum(vl[:k]					)
			)


if __name__ == "__main__":
					import doctest

					doctest.testmod()



'''simple docstring'''



import warnings
from functools import wraps
from typing import Callable







def     _UpperCamelCase      (		UpperCamelCase__					):

			@wraps(UpperCamelCase__					)
			def _inner_fn(*UpperCamelCase__ ,      **UpperCamelCase__					):
						warnings.warn(
						    (f'''\'{fn.__name__}\' is experimental and might be subject to breaking changes in the future.''') ,      UpperCamelCase__ ,      )
						return fn(*UpperCamelCase__ ,      **UpperCamelCase__					)

			return _inner_fn