Types
SegmentTree[T; p] = ref object default: T arr*: seq[T] lastnode: int length: int
- Source Edit
Procs
proc `$`[ST: SegmentTree](self: ST): string
- Source Edit
proc `[]=`[ST: SegmentTree](self: ST; index: Natural; val: ST.T)
- Source Edit
proc `[]`[ST: SegmentTree](self: ST; index: Natural): ST.T
- Source Edit
proc `[]`[ST: SegmentTree](self: ST; segment: HSlice[int, int]): ST.T
- Source Edit
proc get[ST: SegmentTree](self: ST; q_left: Natural; q_right: Natural): ST.T
- 半開区間[q_left,q_right)についての演算結果を返します。 Source Edit
proc get[ST: SegmentTree](self: ST; segment: HSlice[int, int]): ST.T
- Source Edit
proc get_all[ST: SegmentTree](self: ST): ST.T
- [0,len(self))区間の演算結果をO(1)で返す Source Edit
proc len[ST: SegmentTree](self: ST): int
- Source Edit
proc max_right[ST: SegmentTree](self: ST; l: int; f: proc (value: ST.T): bool): int
- Source Edit
proc min_left[ST: SegmentTree](self: ST; r: int; f: proc (value: ST.T): bool): int
- Source Edit
proc update[ST: SegmentTree](self: ST; x: Natural; val: ST.T)
- xの要素をvalに変更します。 Source Edit
Templates
template initSegmentTree[T](n: int; merge: untyped; default: T): untyped
- Source Edit
template initSegmentTree[T](v: openArray[T]; merge: untyped; default: T): untyped
- Source Edit
template newSegWith(V, merge, default: untyped): untyped
- Source Edit