class Solution {
public:
    int smallestDivisor(vector<int>& nums, int threshold) {
        int l=1,r=10e6;
        
        while (l<=r){
            int mid = l+ (r-l)/2;
            int sum = 0;
            
            for (auto i:nums){
                sum+=ceil((float)i/mid);
            }
            
            if (sum<=threshold){
                r=mid-1;
            }
            else{
                l=mid+1;
            }
        }
        
        return l;
    }
    
};