#include <bits/stdc++.h>
using namespace std;
int n;
int v[1000005];
int main() {
ios::sync_with_stdio(false); cin.tie(0);
cin>>n;
for(int i=1; i<=n; ++i) {
cin>>v[i];
}
int maxi = *max_element(v+1, v+n+1);
int ans = 0;
for(int bit = 32 - __builtin_clz(maxi); bit >= 0; --bit) {
int cnt = 0;
for(int i=1; i<=n; ++i) {
v[i] &= (1<<bit+1) - 1;
}
sort(v+1, v+n+1);
for(int i=1; i<=n; ++i) {
//v[j] + v[i] >= (1<<bit) && v[j] + v[i] < (1<<bit+1) ||
//v[j] + v[i] >= (1<<bit) + (1<<bit+1)
int p1 = lower_bound(v+1, v+i+1, (1<<bit) - v[i]) - v;
int p2 = lower_bound(v+1, v+i+1, (1<<bit+1) - v[i]) - v;
int p3 = lower_bound(v+1, v+i+1, (1<<bit) + (1<<bit+1) - v[i]) - v;
cnt += p2 - p1 + i - p3 + 1;
}
if(cnt & 1) {
ans |= (1<<bit);
}
}
cout<<ans;
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |