This documentation is automatically generated by competitive-verifier/competitive-verifier
#include "lib/segtree/dual_segment_tree.hpp"#pragma once
#include <bit>
#include <cassert>
#include <vector>
#include "segtree/monoid.hpp"
/// @brief 双対セグメント木
template <class M>
struct dual_segment_tree {
private:
using T = typename M::value_type;
public:
dual_segment_tree() : dual_segment_tree(0) {}
explicit dual_segment_tree(int n, T e = M::id()) : dual_segment_tree(std::vector<T>(n, e)) {}
template <class U>
explicit dual_segment_tree(const std::vector<U> &v) : _n(v.size()) {
_size = std::bit_ceil<unsigned>(_n);
_log = std::countr_zero<unsigned>(_size);
data = std::vector<T>(_size << 1, M::id());
for (int i = 0; i < _n; ++i) data[_size + i] = T(v[i]);
}
T at(int k) { return get(k); }
T get(int k) {
assert(0 <= k && k < _n);
k += _size;
for (int i = _log; i >= 1; --i) push(k >> i);
return data[k];
}
void apply(int a, T val) { apply(a, a + 1, val); }
void apply(int a, int b, T val) {
assert(0 <= a && a <= _n);
assert(0 <= b && b <= _n);
a += _size, b += _size;
for (int i = _log; i >= 1; --i) {
if (((a >> i) << i) != a) push(a >> i);
if (((b >> i) << i) != b) push((b - 1) >> i);
}
for (; a < b; a >>= 1, b >>= 1) {
if (a & 1) all_apply(a++, val);
if (b & 1) all_apply(--b, val);
}
}
private:
int _n, _size, _log;
std::vector<T> data;
void all_apply(int k, T val) { data[k] = M::op(val, data[k]); }
void push(int k) {
all_apply(2 * k, data[k]);
all_apply(2 * k + 1, data[k]);
data[k] = M::id();
}
};
Traceback (most recent call last):
File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/resolver.py", line 291, in resolve
bundled_code = language.bundle(path, basedir=basedir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus.py", line 242, in bundle
bundler.update(path)
File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus_bundle.py", line 479, in update
self._resolve(pathlib.Path(included), included_from=path)
File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus_bundle.py", line 286, in _resolve
raise BundleErrorAt(path, -1, "no such header")
competitive_verifier.oj.verify.languages.cplusplus_bundle.BundleErrorAt: segtree/monoid.hpp: line -1: no such header