Types
RangeReverseArrayMonoid[T] = ref object root: RangeReverseArrayMonoidNode[T] length: int op: proc (x, y: T): T e: T
- Source Edit
Procs
proc `$`[T](self: RangeReverseArrayMonoid[T]): string
- Source Edit
proc `[]=`[T](self: RangeReverseArrayMonoid[T]; index: Natural; value: T)
- Source Edit
proc `[]`[T](self: RangeReverseArrayMonoid[T]; index: BackwardsIndex): T
- Source Edit
proc `[]`[T](self: RangeReverseArrayMonoid[T]; index: int): T
- Source Edit
proc `[]`[T](self: RangeReverseArrayMonoid[T]; segment: HSlice[int, int]): T
- Source Edit
proc erase[T](self: RangeReverseArrayMonoid[T]; index: int)
- Source Edit
proc erase[T](self: RangeReverseArrayMonoid[T]; l, r: int)
- Source Edit
proc erase[T](self: RangeReverseArrayMonoid[T]; segment: HSlice[int, int])
- Source Edit
proc fold[T](self: RangeReverseArrayMonoid[T]): T
- Source Edit
proc fold[T](self: RangeReverseArrayMonoid[T]; l, r: int): T
- Source Edit
proc fold[T](self: RangeReverseArrayMonoid[T]; segment: HSlice[int, int]): T
- Source Edit
proc get[T](self: RangeReverseArrayMonoid[T]; index: int): T
- index番目の値を返します。 Source Edit
proc get[T](self: RangeReverseArrayMonoid[T]; l, r: int): T
- 半開区間 [l, r) の総積を返す。 Source Edit
proc get[T](self: RangeReverseArrayMonoid[T]; segment: HSlice[int, int]): T
- 閉区間segmentの総積を返します。 Source Edit
proc get_all[T](self: RangeReverseArrayMonoid[T]): T
- [0,len(self))区間の総積をO(1)で返します。 Source Edit
proc initRangeReverseArrayMonoid[T](v: openArray[T]; op: proc (x, y: T): T; e: T): RangeReverseArrayMonoid[ T]
- vで初期化します。 区間反転、一点取得、一点更新、区間総積はすべて期待O(log N)です。 Source Edit
proc insert[T](self: RangeReverseArrayMonoid[T]; index: int; value: T)
- index の直前に挿入する。index = len なら末尾。 Source Edit
proc len[T](self: RangeReverseArrayMonoid[T]): int
- Source Edit
proc max_right[T](self: RangeReverseArrayMonoid[T]; l: int; f: proc (x: T): bool): int
- f(get(l, r)) が真となる最大の r を返す。 f(e) = true で、区間を伸ばしたとき真から偽への変化が単調であること。 Source Edit
proc min_left[T](self: RangeReverseArrayMonoid[T]; r: int; f: proc (x: T): bool): int
- f(get(l, r)) が真となる最小の l を返す。 f(e) = true で、区間を伸ばしたとき真から偽への変化が単調であること。 Source Edit
proc reverse[T](self: RangeReverseArrayMonoid[T]; l, r: int)
- 半開区間[l, r)を反転します。 Source Edit
proc reverse[T](self: RangeReverseArrayMonoid[T]; segment: HSlice[int, int])
- 閉区間segmentを反転します。 Source Edit
proc toRangeReverseArrayMonoid[T](v: openArray[T]; op: proc (x, y: T): T; e: T): RangeReverseArrayMonoid[ T]
- Source Edit
proc toSeq[T](self: RangeReverseArrayMonoid[T]): seq[T]
- Source Edit
proc update[T](self: RangeReverseArrayMonoid[T]; index: Natural; value: T)
- index 番目の値を value に変更する。 Source Edit
Iterators
iterator items[T](self: RangeReverseArrayMonoid[T]): T
- Source Edit
Templates
template newRangeReverseArrayMonoidWith(V, op, e: untyped): untyped
- Source Edit