제출 #362246

#제출 시각아이디문제언어결과실행 시간메모리
362246SeDunionXOR Sum (info1cup17_xorsum)C++17
7 / 100
1686 ms4612 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; const int N = 1e6 + 66; // // bit // 2^bit // a[i] %= 2^(bit+1) // 1 <= a[i] <= 2^(bit+1)-1 // 2 <= a[i] + a[j] <= 2^(bit+2)-2 // 0010000000 // 0011111111 // 0110000000 // 0111111111 // // 2^bit <= a[i] + a[j] <= 2^(bit+1)-1 // 2^(bit+1)+2^(bit) <= a[i] + a[j] <= 2^(bit+2)-1 const int LOG = 30; int a[N], b[N]; int main() { ios_base::sync_with_stdio(0); cin.tie(0), cout.tie(0); int n; cin >> n; for (int i = 1 ; i <= n ; ++ i) cin >> a[i]; int ans = 0; for (int bit = 0 ; bit < LOG ; ++ bit) { int parity = 0; for (int i = 1 ; i <= n ; ++ i) { b[i] = a[i] % (1 << (bit+1)); for (int j = 1 ; j <= i ; ++ j) { if ((1<<bit) <= b[i] + b[j] && b[i] + b[j] <= (1<<(bit+1))-1) { parity ^= 1; } if ((1<<(bit+1))+(1<<bit) <= b[i] + b[j] && b[i] + b[j] <= (1<<(bit+2))-1) { parity ^= 1; } } } ans += parity * (1 << bit); } cout << ans; }
#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...