163012025-04-21 21:18:40szilXORangescpp17Accepted 100/100136ms9576 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int MAXN = 200001;

int n, q;

struct Tree {
    vector<int> tree;

    Tree() {
        tree.resize(2*MAXN);
    }

    void upd(int u, int k) {
        u += n;
        tree[u] = k;
        for (u /= 2; u >= 1; u /= 2) {
            tree[u] = tree[2*u] ^ tree[2*u+1];
        }
    }

    int qry(int l, int r) {
        l += n; r += n;
        int res = 0;
        while (l <= r) {
            if (l % 2 == 1) res ^= tree[l++];
            if (r % 2 == 0) res ^= tree[r--];
            l /= 2; r /= 2;
        }
        return res;
    }
};

void solve(){
    cin >> n >> q;
    Tree odd, even;
    for (int i = 1; i <= n; i++) {
        int x; cin >> x;
        if (i & 1)
            odd.upd(i, x);
        else
            even.upd(i, x);
    }
    while (q--) {
        int type, l, r; cin >> type >> l >> r;
        if (type == 1) {
            if (l & 1)
                odd.upd(l, r);
            else
                even.upd(l, r);
        } else {
            int len = r - l + 1;
            if (len & 1) {
                if (l & 1) {
                    cout << odd.qry(l, r) << "\n";
                } else {
                    cout << even.qry(l, r) << "\n";
                }
            } else {
                cout << "0\n";
            }
        }
    }
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    solve();
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask112/12
1Accepted4ms3380 KiB
2Accepted3ms3380 KiB
3Accepted4ms3380 KiB
4Accepted3ms3392 KiB
5Accepted3ms3428 KiB
subtask218/18
1Accepted4ms3432 KiB
2Accepted4ms3380 KiB
3Accepted4ms3380 KiB
4Accepted4ms3504 KiB
5Accepted3ms3444 KiB
subtask325/25
1Accepted6ms3692 KiB
2Accepted7ms3708 KiB
3Accepted7ms3504 KiB
4Accepted6ms3636 KiB
subtask420/20
1Accepted136ms9576 KiB
2Accepted136ms9524 KiB
3Accepted135ms9536 KiB
4Accepted128ms9268 KiB
5Accepted128ms9268 KiB
subtask525/25
1Accepted131ms9268 KiB
2Accepted131ms9188 KiB
3Accepted130ms9272 KiB
4Accepted129ms9052 KiB
5Accepted129ms9056 KiB