Submission #1273866

#TimeUsernameProblemLanguageResultExecution timeMemory
1273866anbgXOR Sum (info1cup17_xorsum)C++20
77 / 100
1695 ms8256 KiB
#include<bits/stdc++.h> using namespace std; int n; const int N=1e6+3; int a[N]; int b[N]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; int lg=0; for(int i=1;i<=n;i++) { cin>>a[i]; lg = max(lg, __lg(a[i]) + 1); } int ans=0; for(int mask=0;mask<=lg;mask++) { int total=0; int t=(1<<mask); int pos=n+1; for(int i=1;i<=n;i++) { b[i]=a[i]%(t<<1); } sort(b+1,b+n+1); for(int i=1;i<=n;i++) { if(b[i]>=t){pos=i;break;} } int ptr=0; for(int i=pos-1;i>0;i--) { if(ptr>i)break; while(ptr<=i&&b[ptr]+b[i]<t)ptr++; total+=(i-ptr+1); } ptr=pos; for(int i=pos;i<=n;i++) { while(ptr>0&&b[i]+b[ptr]>=(t<<1))ptr--; total+=ptr; } ptr=pos; for(int i=n;i>=pos;i--) { if(ptr>i)break; while(ptr<=i&&b[i]+b[ptr]<(t<<1)+t)ptr++; total+=i-ptr+1; } ans+=((total)&1)<<mask; } cout<<ans; }
#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...