fork(1) download
  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5. typedef long long ll;
  6. typedef vector<ll> vll;
  7.  
  8. bool comp(int i, int j)
  9. {
  10. return i>j;
  11. }
  12.  
  13. int main()
  14. {
  15. int N;
  16. scanf("%d",&N);
  17. vll dt;
  18. for (int q=0;q<N;++q)
  19. {
  20. ll x;
  21. scanf("%lld",&x);
  22. dt.push_back(x);
  23. }
  24. sort( dt.rbegin(), dt.rend() );
  25. //sort(dt.begin(), dt.end(), comp);
  26. ll sig = 1;
  27. while (sig <= dt[0])
  28. sig<<=1;
  29. sig>>=1;
  30. for (int st = 0;sig>=1;sig>>=1)
  31. {
  32. int i = st;
  33. while (i<N && (dt[i]&sig)==0)
  34. i++;
  35. if (i>=N)
  36. continue;
  37. swap( dt[st], dt[i] );
  38. for (int j=0;j<N;++j)
  39. if (j!=st && (dt[j]&sig)!=0)
  40. dt[j] ^= dt[st];
  41. st++;
  42. }
  43. ll ret = 0;
  44. for (int q=0;q<N;++q)
  45. ret ^= dt[q];
  46. printf("%lld\n",ret);
  47. return 0;
  48. }
  49.  
  50.  
  51.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty