Submission #593434

#TimeUsernameProblemLanguageResultExecution timeMemory
593434serkanrashidXORanges (eJOI19_xoranges)C++14
100 / 100
138 ms11236 KiB
#include <bits/stdc++.h> #define endl '\n' using namespace std; const int maxn=2*1e5+5; int n,q; int a[maxn],chet[4*maxn],nech[4*maxn]; int ql,qr,val; void make_tree_chet(int v, int l, int r) { if(l==r) { if(r%2==0) chet[v]=a[r]; return; } int mid=(l+r)/2; make_tree_chet(v*2+0,l,mid+0); make_tree_chet(v*2+1,mid+1,r); chet[v]=chet[v*2]^chet[v*2+1]; } void make_tree_nech(int v, int l, int r) { if(l==r) { if(r%2==1) nech[v]=a[r]; return; } int mid=(l+r)/2; make_tree_nech(v*2+0,l,mid+0); make_tree_nech(v*2+1,mid+1,r); nech[v]=nech[v*2]^nech[v*2+1]; } int query_chet(int v, int l, int r) { if(l>qr||r<ql||l>r) return 0; if(l>=ql&&r<=qr) return chet[v]; int mid=(l+r)/2; return query_chet(v*2+0,l,mid+0)^query_chet(v*2+1,mid+1,r); } int query_nech(int v, int l, int r) { if(l>qr||r<ql||l>r) return 0; if(l>=ql&&r<=qr) { return nech[v]; cout << nech[v] << " " << v << " " << l << " " << r << endl; } int mid=(l+r)/2; return query_nech(v*2+0,l,mid+0)^query_nech(v*2+1,mid+1,r); } void update_chet(int v, int l, int r) { if(l>qr||r<ql||l>r) return; if(l>=ql&&r<=qr) { chet[v]=val; return; } int mid=(l+r)/2; update_chet(v*2+0,l,mid+0); update_chet(v*2+1,mid+1,r); chet[v]=chet[v*2]^chet[v*2+1]; } void update_nech(int v, int l, int r) { if(l>qr||r<ql||l>r) return; if(l>=ql&&r<=qr) { nech[v]=val; return; } int mid=(l+r)/2; update_nech(v*2+0,l,mid+0); update_nech(v*2+1,mid+1,r); nech[v]=nech[v*2]^nech[v*2+1]; } void read() { cin >> n >> q; for(int i=1;i<=n;i++) { cin >> a[i]; } make_tree_chet(1,1,n); make_tree_nech(1,1,n); int ch,l,r,ind,stoy; for(int i=1;i<=q;i++) { cin >> ch; if(ch==1) { cin >> ind >> stoy; ql=ind; qr=ind; val=stoy; if(ind%2==0) update_chet(1,1,n); else update_nech(1,1,n); } else { cin >> l >> r; if((r-l+1)%2==0) cout << 0 << endl; else { ql=l; qr=r; if(l%2==0) cout << query_chet(1,1,n) << endl; else cout << query_nech(1,1,n) << endl; //cout << "**************************" << endl; } } } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); read(); 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...