




from bisect import bisect
from itertools import accumulate

def      A      (      _SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE    )	-> int:
       lowerCamelCase   :      int			 =					sorted(zip(_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE    ) ,key=lambda _SCREAMING_SNAKE_CASE    : x[0] / x[1] ,reverse=_SCREAMING_SNAKE_CASE    )
       lowerCamelCase ,      lowerCamelCase   :      Dict			 =					[i[0] for i in r], [i[1] for i in r]
       lowerCamelCase   :      Optional[int]			 =					list(accumulate(_SCREAMING_SNAKE_CASE    )    )
       lowerCamelCase   :      List[str]			 =					bisect(_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE    )
       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()












def      A      (      _SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE    )	-> list:
       lowerCamelCase   :      Dict			 =					len(_SCREAMING_SNAKE_CASE    )
       lowerCamelCase   :      Union[str, Any]			 =					[]
       for i in range(len(_SCREAMING_SNAKE_CASE    ) - pat_len + 1    ):
              lowerCamelCase   :      Dict			 =					True
              for j in range(_SCREAMING_SNAKE_CASE    ):
                     if s[i + j] != pattern[j]:
                            lowerCamelCase   :      Optional[int]			 =					False
                            break
              if match_found:
                     position.append(_SCREAMING_SNAKE_CASE    )
       return position


if __name__ == "__main__":
       assert naive_pattern_search('ABCDEFG', 'DE') == [3]
       print(naive_pattern_search('ABAAABCDBBABCDDEBCABC', 'ABC'))






