Submission #1368431

#TimeUsernameProblemLanguageResultExecution timeMemory
1368431biserailievaXORanges (eJOI19_xoranges)C11
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

int n, q;
int A[200005];
int treeEven[800005];
int treeOdd[800005];

void build(int node, int l, int r)
{
    if(l==r)
    {
        if(l%2==0)
        {
            treeEven[node]=A[l];
            treeOdd[node]=0;
        }
        else
        {
            treeOdd[node]=A[l];
            treeEven[node]=0;
        }
    }
    else
    {
        int mid=(l+r)/2;
        build(node*2, l, mid);
        build(node*2+1, mid+1, r);
        treeEven[node]=treeEven[node*2]^treeEven[node*2+1];
        treeOdd[node]=treeOdd[node*2]^treeOdd[node*2+1];
    }
}

void update(int node, int l, int r, int pos, int val)
{
    if(l==r)
    {
        if(l%2==0)
        {
            treeEven[node]=val;
            treeOdd[node]=0;
        }
        else
        {
            treeOdd[node]=val;
            treeEven[node]=0;
        }
    }
    else
    {
        int mid=(l+r)/2;
        if(pos<=mid)
        {
            update(node*2, l, mid, pos, val);
        }
        else
        {
            update(node*2+1, mid+1, r, pos, val);
        }
        treeEven[node]=treeEven[node*2]^treeEven[node*2+1];
        treeOdd[node]=treeOdd[node*2]^treeOdd[node*2+1];
    }
}

int queryEven(int node, int l, int r, int L, int R)
{
    if(R<l || L>r)
    {
        return 0;
    }
    if(L<=l && r<=R)
    {
        return treeEven[node];
    }
    int mid=(l+r)/2;
    return queryEven(node*2, l, mid, L, R) ^ queryEven(node*2+1, mid+1, r, L, R);
}

int queryOdd(int node, int l, int r, int L, int R)
{
    if(R<l || L>r)
    {
        return 0;
    }
    if(L<=l && r<=R)
    {
        return treeOdd[node];
    }
    int mid=(l+r)/2;
    return queryOdd(node*2, l, mid, L, R) ^ queryOdd(node*2+1, mid+1, r, L, R);
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>q;
    for(int i=0;i<n;i++)
    {
        cin>>A[i];
    }
    build(1, 0, n-1);
    while(q--)
    {
        int x; 
        cin>>x;
        if(x==1)
        {
            int i, j;
            cin>>i>>j;
            i--;
            update(1, 0, n-1, i, j);
        }
        else
        {
            int l, r;
            cin>>l>>r;
            l--;
            r--;
            if((r-l+1)%2==0)
            {
                cout<<0<<endl;
            }
            else
            {
                if(l%2==0)
                {
                    cout<<queryEven(1, 0, n-1, l, r)<<endl;
                }
                else
                {
                    cout<<queryOdd(1, 0, n-1, l, r)<<endl;
                }
            }
        }
    }
    return 0;
}

Compilation message (stderr)

xoranges.c:1:10: fatal error: bits/stdc++.h: No such file or directory
    1 | #include <bits/stdc++.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.