fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define scan(n) scanf("%d",&n)
  4. #define INF 1000000000000
  5. #define M 1000000
  6. #define MAX 100000
  7. #define X 6
  8. #define set(x,y) memset(x,y,sizeof(x))
  9. #define fori(l,r,x) for (ll int i=l;i<=r;i+=x)
  10. #define forj(l,r,x) for (ll int j=l;j<=r;j+=x)
  11. using namespace std;
  12.  
  13. ll int n;
  14. ll int a[MAX+1];
  15.  
  16. ll int func(){
  17. ll int index = 0;
  18. for(ll int i=63;i>=0;i--){
  19. ll int mx_in=-1;
  20. forj(index,n-1,1) if (((a[j]&(1<<i))!=0)&&a[j]>a[mx_in]) mx_in = j;
  21. if (mx_in==-1) continue;
  22. swap(a[index],a[mx_in]);
  23. mx_in = index;
  24. forj(0,n-1,1) if (j!=mx_in&&((a[j]&(1<<i))!=0)) a[j]^=a[mx_in];
  25. index++;
  26. }
  27. ll int r = 0;
  28. fori(0,n-1,1) r=r^a[i];
  29. return r;
  30. }
  31.  
  32. int init(){
  33. cin>>n;
  34. fori(0,n-1,1) cin>>a[i];
  35. cout << func() << endl;
  36. return 0;
  37. }
  38.  
  39. int main(){
  40. //clock_t tStart = clock();
  41. init();
  42. //printf("Time taken: %.6fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0s 4240KB
stdin
3
1 2 3
stdout
3