제출 #766135

#제출 시각아이디문제언어결과실행 시간메모리
766135Ahmed57XOR Sum (info1cup17_xorsum)C++17
45 / 100
1666 ms24368 KiB
#include <bits/stdc++.h> using namespace std; signed main(){ ios_base::sync_with_stdio(false);cin.tie(0); long long n; cin>>n; long long arr[n]; for(int i = 0;i<n;i++){ cin>>arr[i]; } long long all = 0; /* for(int i = 0;i<8;i++){ int frq[(1<<i)] = {0}; for(int j = 0;j<n;j++){ frq[arr[j]&((1<<i)-1)]++; } int cnt = 0; for(int j = 0;j<(1<<i);j++){ for(int e = 0;e<(1<<i);e++){ if((j+e)&(1<<i)){ cnt+=frq[j]*frq[e]; } } } if(cnt&1)all+=(1<<i); }*/ for(long long i = 0;i<30;i++){ vector<long long> v; long long ans = 0; for(int j = 0;j<n;j++){ if((arr[j]+arr[j])&(1LL<<i)){ ans++; } v.push_back(arr[j]%(1LL<<(i+1))); } sort(v.begin(),v.end()); for(int j = 0;j<n;j++){ long long l = (1LL<<i) , r = (1LL<<(i+1)); l-=arr[j] , r-=arr[j]; l%=(1LL<<(i+1)); r%=(1LL<<(i+1)); l+=(1LL<<(i+1)); r+=(1LL<<(i+1)); l%=(1LL<<(i+1)); r%=(1LL<<(i+1)); if(l<r){ ans += (lower_bound(v.begin(),v.end(),r)-v.begin())-(lower_bound(v.begin(),v.end(),l)-v.begin()); }else{ ans += (lower_bound(v.begin(),v.end(),r)-v.begin()) + (n-(lower_bound(v.begin(),v.end(),l)-v.begin())); } } if(((ans/2)&1))all+=(1LL<<i); } cout<<all<<endl; }
#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...