class Solution {
public:
vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
int n = nums.size();
auto idx = vector<int>(n);
for (int i = 0; i < n; i++) idx[i] = i;
sort(idx.begin(), idx.end(), [&](const int& a, const int& b){
return nums[a] < nums[b];
});
vector<int> res(n);
res[idx[0]] = 0;
for (int i = 1; i < n; i++) {
res[idx[i]] = nums[idx[i]] == nums[idx[i - 1]] ? res[idx[i - 1]] : i;
}
return res;
}
};