Submission #1249878

#TimeUsernameProblemLanguageResultExecution timeMemory
1249878PetrixXORanges (eJOI19_xoranges)C++20
55 / 100
1 ms584 KiB
#include <iostream>
using namespace std;
#define int long long
int aib[2][20001];
int v[20001],n;

void update(int ind,int poz,int a){
    while(poz<=n){
        aib[ind][poz]^=a;
        poz+=(poz&-poz);
    }
}
int query(int ind,int poz){
    int rasp=0;
    while(poz>0){
        rasp^=aib[ind][poz];
        poz-=(poz&-poz);
    }
    return rasp;
}
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int i,q,cer,a,b;
    cin>>n>>q;
    for(i=1;i<=n;i++){
        cin>>v[i];
        update(i%2,i,v[i]);
    }
    while(q--){
        cin>>cer>>a>>b;
        if(cer==1){
            update(a%2,a,b^v[a]);
            v[a]=b;
        }else{
            if((b-a+1)%2==0) cout<<"0\n";
            else cout<<(int)(query(b%2,b)^query(a%2,a-1))<<"\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...