Kyopro Library
読み取り中…
検索中…
一致する文字列を見つけられません
range_max.hpp
[詳解]
1
#
include
"../../kyopro_library/template.hpp"
2
3
struct
RangeMax
{
4
int
n
;
5
vector
<
ll
>
dat
;
6
RangeMax
(
int
m) {
n
=m; dat=vector<ll>(2*n,-INF); }
7
void
set
(
int
i, ll x) {
8
dat[i+=n]=x;
9
while
(i>>=1) dat[i]=max(dat[i<<1],dat[i<<1|1]);
10
}
11
ll
get
(
int
l,
int
r) {
12
l+=
n
; r+=
n
;
13
ll ret=-
INF
;
14
while
(l<r) {
15
if
(l&1) chmax(ret,dat[l++]);
16
if
(r&1) chmax(ret,dat[--r]);
17
l>>=1; r>>=1;
18
}
19
return
ret;
20
}
21
};
RangeMax
Definition
range_max.hpp:3
RangeMax::n
int n
Definition
range_max.hpp:4
RangeMax::RangeMax
RangeMax(int m)
Definition
range_max.hpp:6
RangeMax::dat
vector< ll > dat
Definition
range_max.hpp:5
RangeMax::get
ll get(int l, int r)
Definition
range_max.hpp:11
RangeMax::set
void set(int i, ll x)
Definition
range_max.hpp:7
INF
const int INF
Definition
template.hpp:13
data_structure
range_max.hpp
構築:
1.13.2