[docs]105defpop(self,k:int=-1)->T:106assert(107-self._len<=k<self._len108),f"IndexError: FenwickTreeSet.pop({k}), Index out of range."109ifk<0:110k+=self._len111self._len-=1112x=self._fw._pop(k)113self._cnt[x]=0114returnself._to_origin[x]
115
[docs]116defpop_min(self)->T:117assert(118self._len>0119),f"IndexError: pop_min() from empty {self.__class__.__name__}."120returnself.pop(0)
121
[docs]122defpop_max(self)->T:123assert(124self._len>0125),f"IndexError: pop_max() from empty {self.__class__.__name__}."126returnself.pop(-1)
137138def__getitem__(self,k):139assert(140-self._len<=k<self._len141),f"IndexError: FenwickTreeSet[{k}], Index out of range."142ifk<0:143k+=self._len144returnself._to_origin[self._fw.bisect_right(k)]145146def__iter__(self):147self._iter=0148returnself149150def__next__(self):151ifself._iter==self._len:152raiseStopIteration153res=self._to_origin[self._fw.bisect_right(self._iter)]154self._iter+=1155returnres156157def__reversed__(self):158_to_origin=self._to_origin159foriinrange(self._len):160yield_to_origin[self._fw.bisect_right(self._len-i-1)]161162def__len__(self):163returnself._len164165def__contains__(self,key:T):166returnself._cnt[self._to_zaatsu[key]]>0167168def__bool__(self):169returnself._len>0170171def__str__(self):172return"{"+", ".join(map(str,self))+"}"173174def__repr__(self):175returnf"{self.__class__.__name__}({self})"