Advertisement
El_GEMMY

array bitwise & #2

Sep 12th, 2021
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3.  
  4. using namespace std;
  5. using namespace __gnu_pbds;
  6.  
  7. typedef long long ll;
  8. typedef unsigned long long ull;
  9. typedef tree<int,null_type,less<>,rb_tree_tag,tree_order_statistics_node_update> indexed_set;
  10.  
  11. #define all(v) v.begin(),v.end()
  12. #define rall(v) v.rbegin(),v.rend()
  13. #define MOD 1000000007
  14. #define PI 3.14159265
  15. #define ceil(a, b) ((a / b) + (a % b ? 1 : 0))
  16. #define imin INT_MIN
  17. #define imax INT_MAX
  18. #define nl '\n'
  19. #define modulo(a, b, m) ((a % m) * (b % m)) % m
  20.  
  21. void Start_Crushing() {
  22.     ios::sync_with_stdio(false);
  23.     cin.tie(nullptr);
  24.     cout.tie(nullptr);
  25. #ifndef ONLINE_JUDGE
  26.     freopen("input.txt", "r", stdin);
  27.     freopen("output.txt", "w", stdout);
  28. #endif
  29. }
  30. //vector<int> dx = {0, 0, 1, -1, 1, 1, -1, -1}, dy = {1, -1, 0, 0, 1, -1, 1, -1};
  31. //int dx[] = {0, 0, 1, -1}, dy[] = {1, -1, 0, 0};
  32.  
  33.  
  34. void solve(){
  35.     unordered_map<int, ll> freq;
  36.    
  37.     int n; cin >> n;
  38.     vector<int> v(n);
  39.     for(auto& i : v){
  40.         cin >> i;
  41.         freq[i]++;
  42.     }
  43.    
  44.     ll ans = 0;
  45.     for(auto& [x, y] : freq){
  46.         for(auto& [i, j] : freq){
  47.             if(x == i) continue;
  48.             int res = x & i;
  49.             if(log2(res) == int(log2(res))){
  50.                 ans += y * j;
  51.             }
  52.         }
  53.         if(log2(x) == int(log2(x))){
  54.             ans += y * (y - 1) / 2;
  55.         }
  56.     }
  57.     cout << ans;
  58. }
  59.  
  60. int main(){
  61.     //        freopen("equal.in", "r", stdin);
  62.     Start_Crushing();
  63.     int t = 1;
  64. //    /*is Single Test case?*/ cin >> t;
  65.     while (t--) {
  66.         solve();
  67.         if(!t) break;
  68.         cout << "\n";
  69.     }
  70.  
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement