Beingamanforever

XOR to ALL

Jan 21st, 2025
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. // #include <atcoder/all>
  3. using namespace std;
  4. #define int long long
  5. #define all(x) (x).begin(), (x).end()
  6. typedef vector<int> vi;
  7. typedef vector<vi> vvi;
  8. typedef vector<pair<int, int>> vpi;
  9. typedef pair<int, int> pi;
  10. #define f first
  11. #define s second
  12. #define pb push_back
  13. #define endl "\n"
  14. #define yes cout << "YES" << endl
  15. #define no cout << "NO" << endl
  16. #define init(x, a) memset(x, a, sizeof(x))
  17. const int mod1 = 1e9 + 7, mod2 = 998244353, INF = 2e18, N = 2e5 + 5, L = 19;
  18. int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
  19. // -----------------------------------------------------------------------------
  20.  
  21. void solve()
  22. {
  23.     int n;
  24.     cin >> n;
  25.     vi a(n);
  26.     int sum = 0;
  27.     vi ones(31), zeros(31);
  28.     for (int i = 0; i < n; i++)
  29.     {
  30.         cin >> a[i];
  31.         sum += a[i];
  32.     }
  33.     for (int b = 0; b < 31; b++)
  34.     {
  35.         int num1 = 0, num2 = 0;
  36.         for (int i = 0; i < n; i++)
  37.         {
  38.             if ((a[i] >> b) & 1)
  39.             {
  40.                 num1++;
  41.             }
  42.             else
  43.             {
  44.                 num2++;
  45.             }
  46.         }
  47.         ones[b] = num1, zeros[b] = num2;
  48.     }
  49.     // cout << ones[0] + zeros[0] << endl;
  50.     for (int i = 0; i < n; i++)
  51.     {
  52.         int temp = 0;
  53.         for (int b = 0; b < 31; b++)
  54.         {
  55.             if ((a[i] >> b) & 1)
  56.             {
  57.                 // zeros to ones
  58.                 temp += (1LL << b) * zeros[b];
  59.             }
  60.             else
  61.             {
  62.                 // if zero, add the ones
  63.                 temp += (1LL << b) * ones[b];
  64.             }
  65.         }
  66.         sum = max(sum, temp);
  67.     }
  68.     cout << sum << endl;
  69.     return;
  70. }
  71.  
  72. signed main()
  73. {
  74.     // __START__;
  75.     ios_base::sync_with_stdio(false);
  76.     cin.tie(NULL);
  77.     cout.tie(NULL);
  78.     int t = 1;
  79.     // cin >> t;
  80.     while (t--)
  81.     {
  82.         solve();
  83.     }
  84.     // __END__;
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment