fork(1) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define fr(i,a,b) for(int i=a;i<=b;i++)
  5. #define sz(x) (int)(x.size())
  6. #define vi vector<int>
  7. #define all(v) (v).begin(),(v).end()
  8. #define pb push_back
  9. int binpow(int a, int b)
  10. {
  11. int res = 1;
  12. while(b>0)
  13. {
  14. if(b&1)
  15. res=res*a;
  16. a=a*a;
  17. b>>=1;
  18. }
  19. return res;
  20. }
  21. int32_t main()
  22. {
  23. int n;
  24. cin>>n;
  25. int arr[n];
  26. fr(i,0,n-1)
  27. cin>>arr[i];
  28. int c=0;
  29. vi vect;
  30. for(int bit=0;bit<64;bit++)
  31. {
  32. c=0;
  33. for(int i=0;i<n;i++)
  34. {
  35. if(arr[i]&(1LL<<bit))
  36. c++;
  37. }
  38. if(c%2==0&&c>=2)
  39. {
  40. vect.pb(bit);
  41. }
  42. }
  43. int x=0;
  44. fr(i,0,n-1)
  45. {
  46. x^=arr[i];
  47. }
  48. if(sz(vect)==0)
  49. {
  50. cout<<x<<endl;
  51. return 0;
  52. }
  53. vi v(n,0);
  54. reverse(all(vect));
  55. for(int i=0;i<n;i++)
  56. {
  57. int j=0;
  58. for(;j<sz(vect);j++)
  59. {
  60. if(arr[i]&(1LL<<vect[j]))
  61. {
  62. break;//positon of the first set bit
  63. }
  64. }
  65. for(;j<sz(vect);j++)
  66. {
  67. v[i]+=binpow(2,vect[j]);
  68. }
  69. }
  70. x+=*max_element(all(v));
  71. cout<<x<<endl;
  72. return 0;
  73. }
Runtime error #stdin #stdout 0s 4452KB
stdin
Standard input is empty
stdout
Standard output is empty