Submission #1146410

#TimeUsernameProblemLanguageResultExecution timeMemory
1146410Alihan_8XOR Sum (info1cup17_xorsum)C++20
0 / 100
1451 ms24308 KiB
#include <bits/stdc++.h> using namespace std; #define int long long signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector <int> a(n); for ( auto &u: a ) cin >> u; int ans = 0; for ( int b = 0; b < 30; b++ ){ int cnt = 0; array <int,2> t, p; t = p = {0, 0}; for ( int i = 0; i < n; i++ ){ int x = a[i] >> b & 1; cnt += t[x ^ 1]; t[x] += 1; } if ( b > 0 ){ int freq = 0; for ( int i = 0; i < n; i++ ){ int x = a[i] >> b & 1, y = a[i] >> (b - 1) & 1; if ( y != 0 ){ freq += 1; cnt += freq; cnt -= p[x ^ 1] * 2; p[x] += 1; } } } vector <int> q; for ( auto &u: a ){ if ( u >> b & 1 ) continue; q.push_back(u % (1 << b)); } sort(q.begin(), q.end()); int m = q.size(), j = m; for ( int i = 0; i < m; i++ ){ if ( j <= i ) break; while ( j - 1 > i && q[j - 1] + q[i] >= (1 << b) ) --j; cnt += m - j; } ans |= (cnt & 1) << b; } cout << ans << '\n'; }
#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...