Submission #1219291

#TimeUsernameProblemLanguageResultExecution timeMemory
1219291mariamtsagareliXORanges (eJOI19_xoranges)C++20
0 / 100
51 ms3788 KiB
#include <bits/stdc++.h>
using namespace std;
typedef unsigned int ui;
struct f1{
    int n;
    vector<ui> f;
    f1(int _n):n(_n),f(n+1,0){}
    void upd(int i, ui v){for(;i<=n;i+=i&-i)f[i]^=v;}
    ui qry(int i){ui s=0;for(;i>0;i-=i&-i)s^=f[i];return s;}
    ui range(int l,int r){return qry(r)^qry(l-1);}
};
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,q;
    cin>>n>>q;
    vector<ui>a(n+1);
    for(int i=1;i<=n;i++)cin>>a[i];
    f1 odd(n), even(n);
    for(int i=1;i<=n;i++){
        if(i&1) odd.upd(i,a[i]); else even.upd(i,a[i]);
    }
    while(q--){
        int t;cin>>t;
        if(t==1){
            int i;ui x;
            cin>>i>>x;
            ui old=a[i];
            if(i&1){odd.upd(i,old^x);} else {even.upd(i,old^x);}            
            a[i]=x;
        } else {
            int l,r;cin>>l>>r;
            int len=r-l+1;
            if(len&1) cout<<0u<<"\n";
            else if(l&1) cout<<odd.range(l,r)<<"\n";
            else cout<<even.range(l,r)<<"\n";
        }
    }
    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...