Submission #1314137

#TimeUsernameProblemLanguageResultExecution timeMemory
1314137andrei_nXOR Sum (info1cup17_xorsum)C++20
45 / 100
1694 ms4248 KiB
#include <bits/stdc++.h>

using namespace std;

int n;
int v[1000005];

int main() {
    ios::sync_with_stdio(false); cin.tie(0);
    cin>>n;
    for(int i=1; i<=n; ++i) {
        cin>>v[i];
    }
    int ans = 0;
    for(int bit = 29; bit >= 0; --bit) {
        int cnt = 0;
        for(int i=1; i<=n; ++i) {
            v[i] &= (1<<bit+1) - 1;
        }
        sort(v+1, v+n+1);
        for(int i=1; i<=n; ++i) {
            //v[j] + v[i] >= (1<<bit) && v[j] + v[i] < (1<<bit+1) ||
            //v[j] + v[i] >= (1<<bit) + (1<<bit+1)
            int p1 = lower_bound(v+1, v+i+1, (1<<bit) - v[i]) - v;
            int p2 = lower_bound(v+1, v+i+1, (1<<bit+1) - v[i]) - v;
            int p3 = lower_bound(v+1, v+i+1, (1<<bit) + (1<<bit+1) - v[i]) - v;
            cnt += p2 - p1 + i - p3 + 1;
        }
        if(cnt & 1) {
            ans |= (1<<bit);
        }
    }
    cout<<ans;
    return 0;
}
#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...