Types
RangeReverseDualSegmentTree[S; F] = ref object root: RangeReverseDualSegmentTreeNode[S, F] length: int mapping: proc (f: F; x: S): S composition: proc (f, g: F): F id: F
- Source Edit
Procs
proc `$`[S, F](self: RangeReverseDualSegmentTree[S, F]): string
- Source Edit
proc `[]=`[S, F](self: RangeReverseDualSegmentTree[S, F]; index: Natural; value: S)
- Source Edit
proc `[]`[S, F](self: RangeReverseDualSegmentTree[S, F]; index: BackwardsIndex): S
- Source Edit
proc `[]`[S, F](self: RangeReverseDualSegmentTree[S, F]; index: int): S
- Source Edit
proc apply[S, F](self: RangeReverseDualSegmentTree[S, F]; index: int; f: F)
- Source Edit
proc apply[S, F](self: RangeReverseDualSegmentTree[S, F]; l, r: int; f: F)
- Source Edit
proc apply[S, F](self: RangeReverseDualSegmentTree[S, F]; segment: HSlice[int, int]; f: F)
- Source Edit
proc erase[S, F](self: RangeReverseDualSegmentTree[S, F]; index: int)
- index 番目の要素を削除する。期待 O(log N)。 Source Edit
proc erase[S, F](self: RangeReverseDualSegmentTree[S, F]; l, r: int)
- 半開区間 [l, r) を削除する。木の操作は期待 O(log N)。 削除した K 個のノードの解放には別途 O(K) かかりうる。 Source Edit
proc erase[S, F](self: RangeReverseDualSegmentTree[S, F]; segment: HSlice[int, int])
- Source Edit
proc get[S, F](self: RangeReverseDualSegmentTree[S, F]; index: int): S
- Source Edit
proc initRangeReverseDualSegmentTree[S, F](n: int; initValue: S; mapping: proc (f: F; x: S): S; composition: proc (f, g: F): F; id: F): RangeReverseDualSegmentTree[ S, F]
- Source Edit
proc initRangeReverseDualSegmentTree[S, F](v: openArray[S]; mapping: proc (f: F; x: S): S; composition: proc (f, g: F): F; id: F): RangeReverseDualSegmentTree[ S, F]
- Source Edit
proc insert[S, F](self: RangeReverseDualSegmentTree[S, F]; index: int; value: S)
- index の直前に value を挿入する。末尾には index = len を指定する。 期待 O(log N)。挿入前の区間更新は新しい要素には作用しない。 Source Edit
proc len[S, F](self: RangeReverseDualSegmentTree[S, F]): int
- Source Edit
proc reverse[S, F](self: RangeReverseDualSegmentTree[S, F]; l, r: int)
- Source Edit
proc reverse[S, F](self: RangeReverseDualSegmentTree[S, F]; segment: HSlice[int, int])
- Source Edit
proc toSeq[S, F](self: RangeReverseDualSegmentTree[S, F]): seq[S]
- Source Edit
proc update[S, F](self: RangeReverseDualSegmentTree[S, F]; index: Natural; value: S)
- Source Edit
Iterators
iterator items[S, F](self: RangeReverseDualSegmentTree[S, F]): S
- Source Edit
Templates
template newRangeReverseDualSegWith(n, initValue, mapping, composition, id: untyped): untyped
- Source Edit
template newRangeReverseDualSegWith(v, mapping, composition, id: untyped): untyped
- Source Edit