library/datastructure/Imos.hpp
Depends on
Code
template <typename T> class Imos {
std::vector<T> data;
public:
Imos() = default;
Imos(int n) : data(n + 1, 0) {}
// [0,n] を作る
//[l,r) に a を追加
void add(int l, int r, T a = 1) {
assert(0 <= l and l <= r and r < data.size());
data[l] += a;
data[r] -= a;
}
std::vector<T> build() {
for (int i = 0; i + 1 < data.size(); i++)
data[i + 1] += data[i];
return data;
}
};
#line 1 "library/datastructure/Imos.hpp"
template <typename T> class Imos {
std::vector<T> data;
public:
Imos() = default;
Imos(int n) : data(n + 1, 0) {}
// [0,n] を作る
//[l,r) に a を追加
void add(int l, int r, T a = 1) {
assert(0 <= l and l <= r and r < data.size());
data[l] += a;
data[r] -= a;
}
std::vector<T> build() {
for (int i = 0; i + 1 < data.size(); i++)
data[i + 1] += data[i];
return data;
}
};
Back to top page