Submission #1305975

#TimeUsernameProblemLanguageResultExecution timeMemory
1305975h1drogenXORanges (eJOI19_xoranges)C++20
100 / 100
68 ms6168 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define ll long long #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define f first #define s second #define yes cout<<"YES\n" #define no cout<<"NO\n" #define imp cout<<-1<<"\n" #define pb push_back #define pii pair<int,int> #define piii pair<int,pair<int,int>> #define ls v<<1 #define rs v<<1|1 #define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) #define ptree tree * const int mod=1e17+3; const int INF = 1e18; const int N=1e5+50; const int logn=18; mt19937_64 rng(14416513); struct bit{ vector<int>t; int sz; void init(int n){ sz=n; t.resize(n+1); } void add(int r,int val){ for(int i=r;i<=sz;i+=((-i)&i)){ t[i]^=val; } } int sum(int r){ int x=0; for(int i=r;i>0;i-=((-i)&i)){ x^=t[i]; } return x; } int query(int l,int r){ return sum(r)^sum(l-1); } int get(int ind){ return sum(ind)^sum(ind-1); } void upd(int ind,int val){ int g=get(ind); add(ind,g); add(ind,val); } }; void solve(){ int n,k; cin>>n>>k; vector<int>v(n); bit t1; bit t2; t1.init(n+1); t2.init(n+1); for(int i=1;i<=n;i++){ int a; cin>>a; if(i%2){ t1.upd(i,a); } else{ t2.upd(i,a); } } for(int i=0;i<k;i++){ int type,l,r; cin>>type>>l>>r; if(type==1){ if(l%2) t1.upd(l,r); else t2.upd(l,r); } else{ if((r-l+1)%2==0){ cout<<0<<"\n"; continue; } if(l%2){ cout<<t1.query(l-1,r)<<"\n"; } else{ cout<<t2.query(l-1,r)<<"\n"; } } } } signed main(){ fast; int t=1; // cin>>t; while(t--){ solve(); } 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...