Submission #889393

#TimeUsernameProblemLanguageResultExecution timeMemory
889393boris_mihovXOR Sum (info1cup17_xorsum)C++17
0 / 100
1636 ms23888 KiB
#include <algorithm> #include <iostream> #include <numeric> #include <cassert> #include <vector> typedef long long llong; const int MAXN = 1000000 + 10; const int MAXLOG = 31; int n; int cnt[2]; llong a[MAXN]; llong b[MAXN]; llong c[MAXN]; llong answer; void solve() { for (int bit = 0 ; bit < MAXLOG ; ++bit) { int cntOnes = 0; std::iota(c + 1, c + 1 + n, 1); std::sort(c + 1, c + 1 + n, [&](int x, int y) { return b[x] < b[y]; }); int ptr = n + 1; llong count = 1LL * cntOnes * (n - cntOnes); for (int i = 1 ; i <= n ; ++i) { while (ptr > 1 && b[c[ptr - 1]] + b[c[i]] >= (1 << bit)) { ptr--; } count += n + 1 - ptr; } if (count & 1) { answer |= (1 << bit); } for (int i = 1 ; i <= n ; ++i) { b[i] |= (a[i] & (1 << bit)); cntOnes += ((a[i] & (1 << bit)) > 0); } } std::cout << answer << '\n'; } void input() { std::cin >> n; for (int i = 1 ; i <= n ; ++i) { std::cin >> a[i]; } } void fastIOI() { std::ios_base :: sync_with_stdio(0); std::cout.tie(nullptr); std::cin.tie(nullptr); } int main() { fastIOI(); input(); solve(); 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...