src/cplib/collections/segtree_static_op

  Source   Edit

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