OIQ

Untitled

OIQ
Sep 19th, 2021
803
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using ull = int64_t;
  6.  
  7. void fastIO() {
  8.     std::ios_base::sync_with_stdio(false);
  9.     std::cin.tie(0);
  10.     std::cout.tie(0);
  11. }
  12.  
  13. int fast_mod(const int input, const int ceil) {
  14.     return input < ceil ? input : input % ceil;
  15. }
  16.  
  17. int main() {
  18.     fastIO();
  19.  
  20.     int n;
  21.     std::cin >> n;
  22.  
  23.     std::vector<int> arr(n, 0);
  24.     int countZeroValues = 0;
  25.  
  26.     for (int i = 0; i < n; i++) {
  27.         std::cin >> arr[i];
  28.         arr[i] = std::abs(arr[i]);
  29.         if (arr[i] == 0) {
  30.             countZeroValues++;
  31.             arr[i] = -1;
  32.         }
  33.     }
  34.  
  35.     int ans = 0;
  36.     while (countZeroValues != n) {
  37.         for (int i = 0; i < n; i++)
  38.             if (fast_mod(arr[i], 2) == 1 && arr[i] > 0) {
  39.                 arr[i] -= 1;
  40.                 ans++;
  41.             }
  42.  
  43.         for (int i = 0; i < n; i++) {
  44.             if (arr[i] > 0)
  45.               arr[i] = arr[i] >> 1;
  46.             if (arr[i] == 0) {
  47.                 countZeroValues++;
  48.                 arr[i] = -1;
  49.             }
  50.         }
  51.         ans++;
  52.     }
  53.  
  54.     std::cout << std::max(ans - 1, 0);
  55.     return 0;
  56. }
  57.  
RAW Paste Data