Advertisement
nikunjsoni

315

May 22nd, 2021
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.71 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     vector<int> bit;
  4.     void update(int idx, int val){
  5.         while(idx < 20004){
  6.             bit[idx] += val;
  7.             idx += (idx & -idx);
  8.         }
  9.     }
  10.    
  11.     int query(int idx){
  12.         int sum = 0;
  13.         while(idx > 0){
  14.             sum += bit[idx];
  15.             idx -= (idx & -idx);
  16.         }
  17.         return sum;
  18.     }
  19.    
  20.     vector<int> countSmaller(vector<int>& nums) {
  21.         vector<int> res;
  22.         bit.resize(20004, 0);
  23.         for(int i=nums.size()-1; i>=0; i--){
  24.             int num = nums[i] + 10001;
  25.             res.push_back(query(num-1));
  26.             update(num, 1);
  27.         }
  28.         reverse(res.begin(), res.end());
  29.         return res;
  30.     }
  31. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement