Kyopro Library
 
読み取り中…
検索中…
一致する文字列を見つけられません
range_min.hpp
[詳解]
1#include"../../kyopro_library/template.hpp"
2
3struct RangeMin {
4 int n;
6 RangeMin(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]=min(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) chmin(ret,dat[l++]);
16 if(r&1) chmin(ret,dat[--r]);
17 l>>=1; r>>=1;
18 }
19 return ret;
20 }
21};
vector< ll > dat
Definition range_min.hpp:5
RangeMin(int m)
Definition range_min.hpp:6
ll get(int l, int r)
Definition range_min.hpp:11
void set(int i, ll x)
Definition range_min.hpp:7
const int INF
Definition template.hpp:13