제출 #1315864

#제출 시각아이디문제언어결과실행 시간메모리
1315864penguin133XOR Sum (info1cup17_xorsum)C++20
0 / 100
1696 ms12332 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

int n, a[1000005];

int main() {
	cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    int ans = 0;
    for (int i = 0; i < 30; i++) {
        vector <int> v;
        for (int j = 1; j <= n; j++) {
            v.push_back(a[j] % (1ll<<(i + 1)));
        }
        sort(v.begin(), v.end());
        long long tmp = 0;
        for (int j = 1; j <= n; j++) {
            int x = a[j] % (1ll<<(i + 1));
            int l = (1ll<<i) - x, r = (1ll<<(i + 1)) - 1 - x;
            if(l >= 0) tmp += upper_bound(v.begin(), v.end(), r) - lower_bound(v.begin(), v.end(), l);
            else {
                tmp += v.end() - lower_bound(v.begin(), v.end(), l + (1ll<<(i + 1)));
                tmp += upper_bound(v.begin(), v.end(), r) - v.begin();
            }
            //cout << tmp << ' ';
        }
        //cout << tmp << '\n';
        //tmp /= 2;
        if (tmp & 1) ans ^= (1ll<<i);
    }
    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...