이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define ll long long
const ll sz=2e5+5;
ll s1[sz*4], s2[sz*4], a[sz], b[sz];
void build1(ll l, ll r, ll in)
{
    if(l==r){
        s1[in]=a[l];
        return;
    }
    ll mid=(l+r)/2;
    build1(l, mid, in*2);
    build1(mid+1, r, in*2+1);
    s1[in]=(s1[in*2]^s1[in*2+1]);
}
void build2(ll l, ll r, ll in)
{
    if(l==r){
        s2[in]=b[l];
        return;
    }
    ll mid=(l+r)/2;
    build2(l, mid, in*2);
    build2(mid+1, r, in*2+1);
    s2[in]=(s2[in*2]^s2[in*2+1]);
}
void update1(ll l, ll r, ll in, ll ind, ll val)
{
    if(ind<l || ind>r) return;
    if(l==r){
        s1[in]=val;
        return;
    }
    ll mid=(l+r)/2;
    update1(l, mid, in*2, ind, val);
    update1(mid+1, r, in*2+1, ind, val);
    s1[in]=(s1[in*2]^s1[in*2+1]);
}
void update2(ll l, ll r, ll in, ll ind, ll val)
{
    if(ind<l || ind>r) return;
    if(l==r){
        s2[in]=val;
        return;
    }
    ll mid=(l+r)/2;
    update2(l, mid, in*2, ind, val);
    update2(mid+1, r, in*2+1, ind, val);
    s2[in]=(s2[in*2]^s2[in*2+1]);
}
ll ans1(ll l, ll r, ll in, ll ql, ll qr)
{
    if(ql>r || qr<l) return 0;
    if(ql<=l && r<=qr){
        return s1[in];
    }
    ll mid=(l+r)/2;
    return (ans1(l, mid, in*2, ql, qr)^ans1(mid+1, r, in*2+1, ql, qr));
}
ll ans2(ll l, ll r, ll in, ll ql, ll qr)
{
    if(ql>r || qr<l) return 0;
    if(ql<=l && r<=qr){
        return s2[in];
    }
    ll mid=(l+r)/2;
    return (ans2(l, mid, in*2, ql, qr)^ans2(mid+1, r, in*2+1, ql, qr));
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    ll n, q;
    cin>>n>>q;
    for(int i=1; i<=n; i++){
        if(i%2){
            cin>>a[i];
        }
        else{
            cin>>b[i];
        }
    }
    build1(1, n, 1);
    build2(1, n, 1);
    while(q--){
        ll t, l, r;
        cin>>t>>l>>r;
        if(t==1){
            if(l%2){
                update1(1, n, 1, l, r);
            }
            else{
                update2(1, n, 1, l, r);
            }
        }
        else{
            if((l-r+1)%2==0){
                cout<<0<<endl;
            }
            else{
                if(l%2){
                    cout<<ans1(1, n, 1, l, r)<<endl;
                }
                else{
                    cout<<ans2(1, n, 1, l, r)<<endl;
                }
            }
        }
    }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |