


'''simple docstring'''





from __future__ import annotations


def        a__     (					UpperCamelCase_						:      Union[str, Any],   UpperCamelCase_						:      List[str]						):
   UpperCAmelCase__	:Optional[int]      =      0
   UpperCAmelCase__	:List[str]      =      len(UpperCAmelCase__						) - 1

   while i < j:
      if nums[i] + nums[j] == target:
         return [i, j]
      elif nums[i] + nums[j] < target:
         UpperCAmelCase__	:str      =      i + 1
      else:
         UpperCAmelCase__	:Optional[int]      =      j - 1

   return []


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    print(F'''{two_pointer([2, 7, 11, 15], 9) = }''')






'''simple docstring'''







from bisect import bisect
from itertools import accumulate
def    UpperCAmelCase__     (   UpperCAmelCase__,							UpperCAmelCase__,							UpperCAmelCase__,							UpperCAmelCase__					)      ->      Dict:
       A_						       =   sorted(zip(UpperCAmelCase__,							UpperCAmelCase__					),							key=lambda UpperCAmelCase__					: x[0] / x[1],							reverse=UpperCAmelCase__					)
       A_       ,      A_						       =   [i[0] for i in r], [i[1] for i in r]
       A_						       =   list(accumulate(UpperCAmelCase__					)					)
       A_						       =   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()
