cp-documentation

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub zawa-tin/cp-documentation

:heavy_check_mark: Test/LC/range_affine_range_sum.test.cpp

Depends on

Code

#define PROBLEM "https://judge.yosupo.jp/problem/range_affine_range_sum"

#include "atcoder/modint"

using mint = atcoder::modint998244353;
std::pair<mint, mint> operator+(const std::pair<mint, mint>& a, const std::pair<mint, mint>& b) {
    return {a.first+b.first,a.second+b.second};
}

#include "../../Src/DataStructure/SegmentTree/LazySegmentTree.hpp"
#include "../../Src/Algebra/Monoid/AdditionMonoid.hpp"
#include "../../Src/Algebra/Monoid/AffineMonoid.hpp"

#include <iostream>
#include <vector>
#include <cassert>
#include <utility>

using namespace zawa;

struct S {
    using ValueMonoid = AdditionMonoid<std::pair<mint, mint>>;
    using OperatorMonoid = AffineMonoid<mint>;
    static std::pair<mint, mint> mapping(const std::pair<mint, mint>& v, const Affine<mint>& o) {
        return { o.a() * v.first + o.b() * v.second, v.second };
    }
};


int main() {
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);
    std::ios::sync_with_stdio(false);
    int n, q; 
    std::cin >> n >> q;
    std::vector<std::pair<mint, mint>> a(n);
    for (auto& x : a) {
        int v;
        std::cin >> v;
        x = {v, 1};
    }
    LazySegmentTree<S> seg(a);
    while (q--) {
        int t, l, r; 
        std::cin >> t >> l >> r;
        if (t == 0) {
            int b, c; 
            std::cin >> b >> c;
            seg.operation(l, r, Affine{ mint{b}, mint{c} });
        }
        else if (t == 1) {
            std::cout << seg.product(l, r).first.val() << '\n';
        }
        else {
            assert(false);
        }
    }
}
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.13.5/x64/lib/python3.13/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
    bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
                   ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.5/x64/lib/python3.13/site-packages/onlinejudge_verify/languages/cplusplus.py", line 187, in bundle
    bundler.update(path)
    ~~~~~~~~~~~~~~^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.5/x64/lib/python3.13/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 401, in update
    self.update(self._resolve(pathlib.Path(included), included_from=path))
                ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.5/x64/lib/python3.13/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 260, in _resolve
    raise BundleErrorAt(path, -1, "no such header")
onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt: atcoder/modint: line -1: no such header
Back to top page