Submission #1296128

#TimeUsernameProblemLanguageResultExecution timeMemory
1296128k12_khoiXORanges (eJOI19_xoranges)C++17
100 / 100
61 ms4556 KiB
#include <bits/stdc++.h>
using namespace std;

const int N=2e5+5;

int n,request,mx_bit,type,x,y;
int a[N],bit[N][2];

void fenwick_update(int u,int v)
{
    bool le=u&1;

    for (int idx=u;idx<=mx_bit;idx+=idx&-idx)
    bit[idx][le]^=v;
}

int fenwick_get(int u)
{
    bool le=u&1;
    int ans=0;

    for (int idx=u;idx>0;idx-=idx&-idx)
    ans^=bit[idx][le];

    return ans;
}

int main()
{
    ios_base::sync_with_stdio(NULL);
    cin.tie(NULL); cout.tie(NULL);

    cin >> n >> request;
    mx_bit=n;
    for (int i=1;i<=n;i++)
    {
        cin >> a[i];
        fenwick_update(i,a[i]);
    }

    while (request--)
    {
        cin >> type >> x >> y;
        if (type==1)
        {
            fenwick_update(x,y^a[x]);
            a[x]=y;
        }
        else
        {
            if ((y-x+1)&1) cout << (fenwick_get(y)^fenwick_get(x-2)) << '\n';
            else cout << 0 << '\n';
        }
    }
}
#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...