Submission #1178779

#TimeUsernameProblemLanguageResultExecution timeMemory
1178779vladkonovalXORanges (eJOI19_xoranges)C++20
0 / 100
1096 ms7492 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' using ll = long long; ll n,q,a[200007],l,r,type,res,i,j,res1,pip,k,res2,x[200007],t[800007]; void build(ll v,ll tl,ll tr) { if (tl==tr) { t[v] = a[tl]; return; } ll tm = (tl+tr)/2; build(2*v+1,tl,tm); build(2*v+2,tm+1,tr); t[v] = t[2*v+1]^t[2*v+2]; } ll que(ll v,ll tl,ll tr,ll l,ll r) { if (l>tr||r<tl) return 0; if (l<=tl&&tr<=r) return t[v]; ll tm = (tl+tr)/2; return (que(2*v+1,tl,tm,l,r)^que(2*v+2,tm+1,tr,l,r)); } int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>q; for (i=1;i<=n;i++) cin>>a[i]; build(0,1,n); for (i=1;i<=n;i++) x[i] = x[i-1]^a[i]; while (q--) { cin>>type>>l>>r; res = 0; pip = 0; res2 = 0; if (type==1) { a[l] = r; } else { if (l==r) cout<<a[l]<<endl; else { for (i=l;i<=r;i++) res2^=a[i]; for (i=1;i<=n;i++) { if (l+i>r) break; for (j=l;j<=r;j++) { if (j+i>r) {pip = 10;break;} res1 = 0; res1 = que(0,1,n,j,j+i); res^=res1; } } cout<<(res^res2)<<endl; } } } 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...