Submission #389269

#TimeUsernameProblemLanguageResultExecution timeMemory
3892692qbingxuanXOR Sum (info1cup17_xorsum)C++14
0 / 100
811 ms4236 KiB
#include <bits/stdc++.h> #ifdef local #define safe cerr<<__PRETTY_FUNCTION__<<" line "<<__LINE__<<" safe\n" #define pary(a...) danb(#a, a) #define debug(a...) qqbx(#a, a) template <typename ...T> void qqbx(const char *s, T ...a) { int cnt = sizeof...(T); ((std::cerr << "\033[1;32m(" << s << ") = (") , ... , (std::cerr << a << (--cnt ? ", " : ")\033[0m\n"))); } template <typename T> void danb(const char *s, T L, T R) { std::cerr << "\033[1;32m[ " << s << " ] = [ "; for (int f = 0; L != R; ++L) std::cerr << (f++ ? ", " : "") << *L; std::cerr << " ]\033[0m\n"; } #else #define debug(...) ((void)0) #define safe ((void)0) #define pary(...) ((void)0) #endif // local #define all(v) begin(v),end(v) #define pb emplace_back using namespace std; const int maxn = 1000025, LGC = 29; struct TREE : vector<int> { int less_equal(int x) { return upper_bound(begin(), end(), x) - begin(); } int greater(int x) { return end() - upper_bound(begin(), end(), x); } } pre[2]; int a[maxn]; signed main() { ios_base::sync_with_stdio(0), cin.tie(0); int n; cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; pre[0].reserve(n); pre[1].reserve(n); int ans = 0; for (int b = 0; b < LGC; b++) { int U = (1<<b) - 1; int parity = 0; pre[0].clear(); pre[1].clear(); sort(a, a+n, [U](int x, int y){ return (x & U) < (y & U); }); continue; for (int i = 0; i < n; i++) { int d = a[i] >> b & 1; pre[d].push_back(a[i] & U); parity += pre[!d].less_equal(~a[i] & U); parity += pre[d].greater(~a[i] & U); } debug(parity); parity &= 1; ans |= parity << 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...