ABC 185

https://atcoder.jp/contests/abc185

A. ABC Preparation

https://atcoder.jp/contests/abc185/tasks/abc185_a

B. Smartphone Addiction

https://atcoder.jp/contests/abc185/tasks/abc185_b

C. Duodecim Ferra

https://atcoder.jp/contests/abc185/tasks/abc185_c

D. Stamp

https://atcoder.jp/contests/abc185/tasks/abc185_d

E. Sequence Matching

https://atcoder.jp/contests/abc185/tasks/abc185_e

F. Range Xor Query

https://atcoder.jp/contests/abc185/tasks/abc185_f

2026/1/19 segment tree の問題であるということを知った状態で自力 AC

単純に xor で segment tree を構築し、クエリに応じて更新・取得を行う。

void solve() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll N, Q;
    cin >> N >> Q;

    auto op = [](ll a, ll b) -> ll {
        return a ^ b;
    };

    auto e = []() -> ll {
        return 0;
    };

    vll A(N);
    rep(i, N) cin >> A[i];

    segtree<ll, op, e> seg(A);

    rep(i, Q) {
        ll t, x, y;
        cin >> t >> x >> y;
        if (t == 1) {
            x--;
            ll val = seg.get(x);
            seg.set(x, val ^ y);
        } else {
            x--;
            cout << seg.prod(x, y) << endl;
        }
    }
}