Submission #720349

#TimeUsernameProblemLanguageResultExecution timeMemory
720349GrandTiger1729XOR Sum (info1cup17_xorsum)C++17
45 / 100
1658 ms12768 KiB
#include <bits/stdc++.h> using namespace std; const int N = 30; int main(){ cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) cin >> a[i]; int ans = 0; for (int j = 0; j < N; j++){ long long cnt = 0; for (int i = 0; i < n; i++){ if (a[i] & 1 << j) cnt += n + 1; } ans ^= (cnt & 1) << j; } for (int j = 1; j <= N; j++){ vector<int> b(n); transform(a.begin(), a.end(), b.begin(), [&](int x){ return x % (1 << j); }); sort(b.begin(), b.end()); long long cnt = 0; for (int i = 0; i < n; i++){ cnt += b.end() - lower_bound(b.begin(), b.end(), (1 << j) - b[i]); cnt += b[i] >= (1 << j - 1); } cnt /= 2; ans ^= (cnt & 1) << j; } cout << ans << '\n'; return 0; }

Compilation message (stderr)

xorsum.cpp: In function 'int main()':
xorsum.cpp:29:36: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   29 |             cnt += b[i] >= (1 << j - 1);
      |                                  ~~^~~
#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...