#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll n, arr[1000005], newarr[1000005];
ll res = 0;
int main() {
cin.tie(0) -> sync_with_stdio(0);
cin >> n;
for(int i=0;i<n;i++) {
cin >> arr[i];
newarr[i] = arr[i];
}
for(int k=0;k<32;k++) {
int cres = 0;
int odc = 0, evc = 0;
for(int i=0;i<n;i++) {
if(newarr[i] & 1) odc++;
else evc++;
}
cres = (odc & 1) * (evc & 1);
if(k) {
long long cnt = 0;
vector<ll> cvec;
for(int i=0;i<n;i++) {
cvec.emplace_back(arr[i] & ((1ll << (k)) - 1));
if(((arr[i] & ((1ll << k) - 1)) << 1) >= (1ll << k)) cnt++;
}
sort(cvec.begin(), cvec.end());
//for(auto &e:cvec) cout << e << ' ';
for(int i=0;i<n;i++) {
auto it = cvec.end() - lower_bound(cvec.begin(), cvec.end(), (1ll << k) - (arr[i] & ((1ll << (k)) - 1)));
cnt += it;
}
//cout << cnt << '\n';
cnt /= 2;
cnt &= 1;
cres ^= cnt;
}
if(cres) res ^= (1ll << k);
for(int i=0;i<n;i++) newarr[i] >>= 1;
}
cout << res;
}
# | 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... |