| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 67695 | yusufake | XOR Sum (info1cup17_xorsum) | C++98 | 1672 ms | 13620 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define pb push_back
#define st first
#define nd second
typedef long long ll;
typedef pair < int , int > pp;
typedef vector < int > vi;
const int mod = 1e9 + 7;
const int N = 1e6 + 6;
int T[N],A[N],one[N],o,zer[N],z,n,i,j,x,ans;
ll t;
int main (){
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&A[i]);
}
for(j=0;j<31;j++){
z = o = 0;
for(i=1;i<=n;i++){
x = A[i];
if(x & (1<<j)){
one[++o] = T[i];
}
else{
zer[++z] = T[i];
}
}
sort(zer+1 , zer+z+1);
sort(one+1 , one+o+1);
t = 0;
for(i=1;i<=n;i++){
x = A[i];
if(x & (1<<j)){
t += o+1 - (int)(lower_bound(one+1 , one+o+1 , (1<<j)-T[i]) - one);
t += (int)(lower_bound(zer+1 , zer+z+1 , (1<<j)-T[i]) - zer-1);
}
else{
t += z+1 - (int)(lower_bound(zer+1 , zer+z+1 , (1<<j)-T[i]) - zer);
t += (int)(lower_bound(one+1 , one+o+1 , (1<<j)-T[i]) - one-1);
}
}
for(i=1;i<=n;i++)
if((A[i]+A[i]) & (1<<j))
t++;
if(t&1) assert(0);
t >>= 1;
if(t&1)
ans += 1 << j;
for(i=1;i<=n;i++)
T[i] += A[i] & (1 << j);
}
printf("%d",ans);
return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
