Submission #1179683

#TimeUsernameProblemLanguageResultExecution timeMemory
1179683mishasimXORanges (eJOI19_xoranges)C++20
0 / 100
51 ms6212 KiB
#include <iostream>

using namespace std;
#define endl '\n'

long long n, q, k[200005], res, op, l, u, prefix[200005], prefix1[200005];

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
        cin >> k[i];
        if (i % 2 == 1) prefix1[i] = (prefix1[i - 2] ^ k[i]);
        else prefix[i] = (prefix[i - 2] ^ k[i]);
    }

    for (int i = 1; i <= q; i++) {
        cin >> op >> l >> u;
        if (op == 1) {
            k[l] = u;
            for (int j = l; j <= n; j++) {
                if (j % 2 == 1) prefix1[j] = (prefix1[j - 2] ^ k[j]);
                else prefix[j] = (prefix[j - 2] ^ k[j]);
            }
        } else {
            res = 0;
            if (l % 2 == 0 && u % 2 == 0) res = prefix[u] ^ prefix[l - 2];
            else if (l % 2 == 1 && u % 2 == 1) res = prefix1[u] ^ prefix[l - 2];
            else res = 0;  // коли л і р різні за парністю
            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...