Submission #1178779

#TimeUsernameProblemLanguageResultExecution timeMemory
1178779vladkonovalXORanges (eJOI19_xoranges)C++20
0 / 100
1096 ms7492 KiB
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
using ll = long long;
ll n,q,a[200007],l,r,type,res,i,j,res1,pip,k,res2,x[200007],t[800007];
void build(ll v,ll tl,ll tr) {
    if (tl==tr) {
        t[v] = a[tl];
        return;
    }
    ll tm = (tl+tr)/2;
    build(2*v+1,tl,tm);
    build(2*v+2,tm+1,tr);
    t[v] = t[2*v+1]^t[2*v+2];
}
ll que(ll v,ll tl,ll tr,ll l,ll r) {
    if (l>tr||r<tl) return 0;
    if (l<=tl&&tr<=r) return t[v];
    ll tm = (tl+tr)/2;
    return (que(2*v+1,tl,tm,l,r)^que(2*v+2,tm+1,tr,l,r));
}
int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n>>q;
    for (i=1;i<=n;i++) cin>>a[i];
    build(0,1,n);
    for (i=1;i<=n;i++) x[i] = x[i-1]^a[i];
    while (q--) {
        cin>>type>>l>>r;
        res = 0;
        pip = 0;
        res2 = 0;
        if (type==1) {
            a[l] = r;
        }
        else {
            if (l==r) cout<<a[l]<<endl;
            else {
                for (i=l;i<=r;i++) res2^=a[i];
                for (i=1;i<=n;i++) {
                    if (l+i>r) break;
                    for (j=l;j<=r;j++) {
                        if (j+i>r) {pip = 10;break;}
                        res1 = 0;
                        res1 = que(0,1,n,j,j+i);
                        res^=res1;
                    }
                }
                cout<<(res^res2)<<endl;
            }

        }

    }
    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...