class Solution {
public:
    typedef  long long ll;
    
    long long minNumberOfSeconds(int h, vector<int>& v) {
        ll i,n=(ll)v.size(),l,r,mid,md=1e8,mx,x,val,tmes=80;
        map<ll,ll> mp;
        
        mx=(ll)md*md;
        l=0;r=mx;
        
        for(i=0;i<100001;i++) mp[i*(i+1)/2]=i;
        
        while(l<r){
            mid=(l+r)/2;
            val=0;
            
            for(i=0;i<n;i++){
                x=mid/v[i];
                auto it= mp.upper_bound(x);
                it--;
                val+=it->second;
            }
            
            if(val>=h) r=mid;
            else l=mid+1;
        }
        
        mid=(l+r)/2;
        
        return mid;
        
    }
};