class DualSegTree: def __init__(self,N,A,op,e) -> None: #N:数列の長さ #A:数列の初期状態 #op:区間更新の写像 #e:∀a,op(a,e)=aとなる単位元e size=1 log_size=1 while size1: i=i//2 ans=self.op(ans,self.tree[i]) return ans #Aの[l,r)をop(A[i],x)で更新する(実際にはせず遅延に色々する) #時間計算量O(logN) def update(self,l,r,x): l+=self.size r+=self.size while l