U ×kŠg¦ã@sZdZd dd„Zd dd„Zddd„Zdd d „Zz dd lTWnek rLYnXeZeZdS)zBisection algorithms.éNcCst||||ƒ}| ||¡dS)zïInsert item x in list a, and keep it sorted assuming a is sorted. If x is already in a, insert it to the right of the rightmost x. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. N)Ú bisect_rightÚinsert©ÚaÚxÚloÚhi©r ú/usr/lib/python3.8/bisect.pyÚ insort_rights r cCsT|dkrtdƒ‚|dkr t|ƒ}||krP||d}|||krF|}q |d}q |S)a€Return the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e <= x, and all e in a[i:] have e > x. So if x already appears in the list, a.insert(x) will insert just after the rightmost x already there. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. rúlo must be non-negativeNéé©Ú ValueErrorÚlen©rrrrZmidr r r rs    rcCst||||ƒ}| ||¡dS)zíInsert item x in list a, and keep it sorted assuming a is sorted. If x is already in a, insert it to the left of the leftmost x. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. N)Ú bisect_leftrrr r r Ú insort_left$s rcCsT|dkrtdƒ‚|dkr t|ƒ}||krP||d}|||krJ|d}q |}q |S)a€Return the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e < x, and all e in a[i:] have e >= x. So if x already appears in the list, a.insert(x) will insert just before the leftmost x already there. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. rr Nr rrrr r r r1s   r)Ú*)rN)rN)rN)rN) Ú__doc__r rrrZ_bisectÚ ImportErrorZbisectZinsortr r r r Ús