Submission #1176430

#TimeUsernameProblemLanguageResultExecution timeMemory
1176430Albara_AbdulhafithXORanges (eJOI19_xoranges)C++20
0 / 100
50 ms4676 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;

#define fastIO ios_base::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr);
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define take(x) for(auto& el : x){cin >> el;}
#define give(x) for(auto& el : x){cout << el << ' ';}cout << '\n';
#define vi vector<int>
#define vvi vector<vi>
#define vll vector<ll>
#define vvll vector<vll>
#define rep(i, x) for(int i = 0; i < x; i++)
#define sz(x) ll(x.size())

const ll modu = 998244353ll;

ll mod(ll x, ll md = modu){
    return (((x % md) + md ) % md);
}



void solve(){
    int n, q; cin >> n >> q;

    vector<int> a(n);
    take(a);

    vector<int> prefodd(n);
    vector<int> prefeven(n);

    prefeven[0] = a[0];
    prefodd[0] = 0;

    for(int i = 1; i < n; i++){
        if(i & 1){
            prefeven[i] = prefeven[i - 1];
            prefodd[i] = a[i] ^ prefodd[i - 1];
        }
        else{
            prefeven[i] = a[i] ^ prefeven[i - 1];
            prefodd[i] = prefodd[i - 1];
        }
    }

    int op, l, r;
    for(int i = 0; i < q; i++){
        cin >> op >> l >> r;
        if(op == 1){
            a[l - 1] = r;
            if(l & 1){
                prefeven[l - 1] = ((l > 1 ? prefeven[l - 2] : 0) ^ a[l - 1]);
            }
            else{
                prefodd[l - 1] = ((l > 1 ? prefodd[l - 2] : 0) ^ a[l - 1]);
            }

            for(int j = l; j < n; j++){
                if(j & 1){
                    prefeven[j] = prefeven[j - 1];
                    prefodd[j] = a[j] ^ prefodd[j - 1];
                }
                else{
                    prefeven[j] = a[j] ^ prefeven[j - 1];
                    prefodd[j] = prefodd[j - 1];
                }
            }
        }
        else{
            if(l & 1){
                cout << (prefeven[r - 1] ^ (l > 1 ? prefeven[l - 2] : 0)) << '\n';
            }
            else{
                cout << (prefodd[r - 1] ^ (l > 1 ? prefodd[l - 2] : 0)) << '\n';
            }
        }
    }
}

int main(){
    fastIO
    int tc = 1;
    //cin >> tc;
    while(tc--){
        solve();
    }
    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...