Submission #246793

#TimeUsernameProblemLanguageResultExecution timeMemory
246793Sho10XORanges (eJOI19_xoranges)C++14
100 / 100
135 ms11128 KiB
#include <bits/stdc++.h> //Andrei Alexandru a.k.a Sho10 #define ll long long int #pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #define all(a) (a).begin(), (a).end() #define sz size #define f first #define s second #define pb push_back #define er erase #define in insert #define mp make_pair #define pi pair #define rc(s) return cout<<s,0 #define endl '\n' #define mod 1000000007 #define PI 3.14159265359 #define MAXN 100005 #define INF 1000000005 #define LINF 1000000000000000005 #define CODE_START ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; ll n,q,a[200005],bit[3][200005]; void build(ll s1,ll pos,ll val){ for(;pos<=n;pos+=pos&(-pos)){ bit[s1][pos]^=val; } } void update(ll s1,ll pos,ll val){ ll m=pos; for(;pos<=2*n;pos+=pos&(-pos)){ bit[s1][pos]=bit[s1][pos]^a[m]^val; } a[m]=val; } ll query(ll s1,ll pos){ ll res=0; if(pos<=0){ return 0; } for(;pos;pos-=pos&(-pos)){ res^=bit[s1][pos]; } return res; } int32_t main(){ CODE_START; cin>>n>>q; for(ll i=1;i<=n;i++) { bit[1][i]=0; bit[0][i]=0; } //cout<<"DA"<<endl; for(ll i=1;i<=n;i++) { cin>>a[i]; if(i%2==0){ build(1,i,a[i]); }else { build(0,i,a[i]); } } //cout<<"DA"<<endl; while(q--){ ll t,x,y; cin>>t>>x>>y; //cout<<"DA"<<endl; if(t==1){ if(x%2==0){ update(1,x,y); }else update(0,x,y); }else { if((x-y+1)%2==0){ cout<<0<<endl; }else { if(y%2==1){ cout<<(query(0,y)^query(0,x-2))<<endl; }else cout<<(query(1,y)^query(1,x-2))<<endl; } } } }
#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...