Submission #410464

#TimeUsernameProblemLanguageResultExecution timeMemory
410464nichkeXOR Sum (info1cup17_xorsum)C++14
45 / 100
1643 ms20444 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define endl '\n' int n, res; int ar[1000006]; int tar[1000006]; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 0; i < n; i++) { cin >> ar[i]; } for (int j = 0; j < 31; j++) { for (int i = 0; i < n; i++) { tar[i] = ar[i] % (1 << (j + 1)); } sort(tar, tar + n); int sum = 0; for (int i = 0; i < n; i++) { int p1, p2, p3; p1 = p2 = p3 = i - 1; int l = i, r = n - 1; while (l <= r) { int m = (l + r) / 2; if (tar[i] + tar[m] < (1 << j)) { p1 = m; l = m + 1; } else { r = m - 1; } } l = i, r = n - 1; while (l <= r) { int m = (l + r) / 2; if (tar[i] + tar[m] < (2 * (1 << j))) { p2 = m; l = m + 1; } else { r = m - 1; } } l = i, r = n - 1; while (l <= r) { int m = (l + r) / 2; if (tar[i] + tar[m] < (3 * (1 << j))) { p3 = m; l = m + 1; } else { r = m - 1; } } sum += p2 - p1 + n - p3; } if (sum & 1) res += (1 << j); } cout << res << '\n'; 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...