Submission #1179645

#TimeUsernameProblemLanguageResultExecution timeMemory
1179645mishasimXORanges (eJOI19_xoranges)C++20
55 / 100
1095 ms3712 KiB
#include <iostream>
using namespace std;

#define endl '\n'
const int MAXN = 200005;

int n, q;
long long a[MAXN];
long long BIT[MAXN];  // Fenwick Tree

void update(int idx, long long val) {
    while (idx <= n) {
        BIT[idx] ^= val;
        idx += idx & -idx;
    }
}

long long query(int idx) {
    long long res = 0;
    while (idx > 0) {
        res ^= BIT[idx];
        idx -= idx & -idx;
    }
    return res;
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        update(i, a[i]);
    }

    while (q--) {
        int op, l, r;
        cin >> op >> l >> r;
        if (op == 1) {
            update(l, a[l]);     // прибираємо старе значення
            a[l] = r;
            update(l, a[l]);     // додаємо нове
        } else {
            long long res = 0;
            for (int i = l; i <= r; i++) {
                long long count = 1LL * (i - l + 1) * (r - i + 1);
                if (count % 2 == 1) {
                    res ^= a[i];
                }
            }
            cout << res << endl;
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...