fork(4) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int Find(vector < int > & v, int n) {
  5.  
  6. vector < int > bit(32, 0);
  7.  
  8. for (int i = 0; i < n; i++)
  9. for (int j = 0; j < 32; j++)
  10. if ((v[i] >> j) & 1)
  11. bit[j]++;
  12.  
  13. long long ans = 0;
  14.  
  15. int M = 1e9 + 7;
  16. for (int i = 0; i < n / 2; i++) {
  17.  
  18. long long val = 0;
  19.  
  20. for (int j = 0; j < 32; j++) {
  21. if (bit[j]) {
  22. val = (val | (1 << j));
  23. bit[j]--;
  24. }
  25. }
  26.  
  27. ans += (val * val);
  28. ans %= M;
  29.  
  30. }
  31.  
  32. return ans;
  33.  
  34. }
  35.  
  36. main(){
  37. int N ;
  38. cin >> N ;
  39.  
  40. vector<int> arr(N + 1) ;
  41.  
  42. for(int i = 0; i < N; ++i)cin >> arr[i] ;
  43.  
  44. cout << Find(arr, N) ;
  45. }
Success #stdin #stdout 0.01s 5428KB
stdin
5
3 6 7 5 3
stdout
98