Submission #675883

#TimeUsernameProblemLanguageResultExecution timeMemory
675883KubetiXORanges (eJOI19_xoranges)C++14
55 / 100
453 ms5408 KiB
#include <iostream>
#include <vector>
#define int long long
using namespace std;
int v[1000001], s[5][1000001];
int32_t main() {
    int n, q;
    cin>>n>>q;
    for(int i=1; i<=n; i++)
        cin>>v[i];
    if(n <= 5000){
        for(int i=0; i<q; i++){
            int t;
            cin>>t;
            if(t == 1){
                int x, y;
                cin>>x>>y;
                v[x] = y;
            }
            else{
                int x, y;
                cin>>x>>y;
                if(abs(x-y)%2 == 1){
                    cout<<0<<'\n';
                }
                else{
                    int sum=0;
                    for(;x<=y;x+=2)
                        sum^=v[x];
                    cout<<sum<<'\n';
                }
            }
        }
    }
    else{
        for(int i=2; i<=n; i++){
            s[i&2][i] ^= s[i&2][i-2];
        }
        for(int h=0; h<q; h++){
            int t, x, y;
            cin>>t>>x>>y;
            if(abs(x-y)%2 == 1){
                cout<<0<<'\n';
                continue;
            }
            int ans = s[y&1][y]^s[x&1][x-1]<<'\n';
            cout<<ans<<'\n';
        }
    }
    return 0;
}
 /*
int main(){
    int n;
    cin>>n;
    vector<vector<int>> v(n+1);
    for(int i=1; i<=n; i++){
        for(int j=i; j<=n; j++){
            for(int x=i; x<=j; x++)
                v[x].push_back(x);
        }
    }
    for(int i=1; i<=n; i++){
        for(auto it:v[i])
            cout<<it<<" ";
        cout<<"-> "<<v[i].size()<<endl;
    }
} */

/*
 for(int i=2; i<=n; i++){
     s[i&2][i] ^= s[i&2][i-2];
 }
 for(int h=0; h<q; h++){
     int t, x, y;
     cin>>t>>x>>y;
     if(abs(x-y)%2 == 1){
         cout<<0<<'\n';
         continue;
     }
     int ans = s[y&1][y]^s[x&1][x-1]<<'\n';
     cout<<ans<<'\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...