Submission #1184044

#TimeUsernameProblemLanguageResultExecution timeMemory
1184044petezaXOR Sum (info1cup17_xorsum)C++20
45 / 100
1695 ms32132 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; ll n, arr[1000005], newarr[1000005]; ll res = 0; int main() { cin.tie(0) -> sync_with_stdio(0); cin >> n; for(int i=0;i<n;i++) { cin >> arr[i]; newarr[i] = arr[i]; } for(int k=0;k<32;k++) { int cres = 0; int odc = 0, evc = 0; for(int i=0;i<n;i++) { if(newarr[i] & 1) odc++; else evc++; } cres = (odc & 1) * (evc & 1); if(k) { long long cnt = 0; vector<ll> cvec; for(int i=0;i<n;i++) { cvec.emplace_back(arr[i] & ((1ll << (k)) - 1)); if(((arr[i] & ((1ll << k) - 1)) << 1) >= (1ll << k)) cnt++; } sort(cvec.begin(), cvec.end()); //for(auto &e:cvec) cout << e << ' '; for(int i=0;i<n;i++) { auto it = cvec.end() - lower_bound(cvec.begin(), cvec.end(), (1ll << k) - (arr[i] & ((1ll << (k)) - 1))); cnt += it; } //cout << cnt << '\n'; cnt /= 2; cnt &= 1; cres ^= cnt; } if(cres) res ^= (1ll << k); for(int i=0;i<n;i++) newarr[i] >>= 1; } cout << res; }
#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...