Submission #1221648

#TimeUsernameProblemLanguageResultExecution timeMemory
1221648mayacXORanges (eJOI19_xoranges)C++20
75 / 100
1095 ms4776 KiB
#include <iostream>
#include <vector>
#include <queue>
using namespace std;



int main(){
    int n,q,a,b,t,ans;
    cin>>n>>q;
    vector<int> v(n),vxor(n+1,0),yesno0(n+1,0),yesno1(n+1,0);
    for(int i=0;i<n;i++){
        cin>>v[i];
        vxor[i+1]=vxor[i]^v[i];
        if(i%2==0){
            yesno0[i+1]=v[i];
            if(i>0)yesno0[i+1]=v[i]^yesno0[i-1];
        }else{
            yesno1[i+1]=v[i];
            yesno1[i+1]=v[i]^yesno1[i-1];
        }
    }
    while(q--){
        cin>>t>>a>>b;a--;
        if(t==1){
            t=b;
            b=b^v[a];
            if(a%2==0){
            for(int i=a+1;i<=n;i+=2){
                yesno0[i]^=b;
            }
        }
            else{
                for(int i=a+1;i<=n;i+=2){
                yesno1[i]^=b;
            }
            }
            v[a]=t;
        }else{
            if((b-a)%2==1){
                if(a%2==1){
                    cout<<(yesno1[a-1]^yesno1[b]);
                }else{
                    if(a>0){
                        cout<<(yesno0[a-1]^yesno0[b]);
                    }else{
                        cout<<yesno0[b];
                    }
                }
            }
            else{
                cout<<0;
            }
            cout<<"\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...