Submission #1101049

#TimeUsernameProblemLanguageResultExecution timeMemory
1101049Kirill22XOR Sum (info1cup17_xorsum)C++17
0 / 100
1664 ms17152 KiB
#include "bits/stdc++.h" using namespace std; void solve() { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } long long ans = 0; for (int bit = 0; bit < 31; bit++) { long long cnt = 0; vector<vector<int>> bucket(2); for (auto& x : a) { bucket[x >> bit & 1].push_back(x % (1 << bit)); } std::sort(bucket[0].begin(), bucket[0].end()); std::sort(bucket[1].begin(), bucket[1].end()); for (auto [_, __] : vector<pair<int, int>>{{0, 0}, {1, 1}}) { auto l = bucket[_]; auto r = bucket[__]; int uk = 0; for (int i = (int) r.size() - 1; i >= 0; i--) { while (uk < (int) l.size() && l[uk] + r[i] < (1 << bit)) uk++; cnt += (int) l.size() - uk; } } for (auto [_, __] : vector<pair<int, int>>{{0, 1}}) { auto l = bucket[_]; auto r = bucket[__]; int uk = 0; for (int i = (int) r.size() - 1; i >= 0; i--) { while (uk < (int) l.size() && l[uk] + r[i] < (1 << bit)) uk++; cnt += uk; } } if (cnt % 2) { ans ^= (1 << bit); } } cout << ans << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; // cin >> t; while (t--) { solve(); } }
#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...