Submission #1179731

#TimeUsernameProblemLanguageResultExecution timeMemory
1179731mishasimXORanges (eJOI19_xoranges)C++20
0 / 100
47 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); cout.tie(0);
    cin >> n >> q;

    for (int i = 1; i <= n; i++) {
        cin >> k[i];
    }

    
    for (int i = 1; i <= n; 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];
            }
            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...