[docs]22defadd(self,h:int,w:int,x:int)->None:23"""Add x to a[h][w]. / O(logH * logW)"""24h+=125w+=126_h,_w,_bit=self._h,self._w,self._bit27whileh<_h:28j=w29bit_h=_bit[h]30whilej<_w:31bit_h[j]+=x32j+=j&-j33h+=h&-h
[docs]38defrange_add(self,h1:int,w1:int,h2:int,w2:int,x:int)->int:39"""Add x to [h1, h2) x [w1, w2) of a. / O(logH * logW)"""40asserth1<=h2andw1<=w241self.add(h1,w1,x)42self.add(h2,w1,-x)43self.add(h1,w2,-x)44self.add(h2,w2,x)