You are viewing a single comment's thread. Return to all comments →
Here is my c++ solution
long compute_time_rec(vector<long> m, long p, long min, long max); // ======== SOLUTION ======== long minTime(vector<long> machines, long goal) { sort(machines.begin(), machines.end()); return compute_time_rec(machines, goal, machines.front()*goal/machines.size(), machines.front()*goal); } long compute_time_rec(vector<long> machines, long production_goal, long min_days, long max_days){ if(machines.size()==1) return max_days; if(min_days == max_days) return min_days; long mid = ( min_days + max_days )/2; long production = 0; for(int i =0; i< machines.size();i++) production+=floor(mid/machines[i]); if(production >= production_goal) return compute_time_rec(machines,production_goal, min_days, mid); else return compute_time_rec(machines, production_goal, mid+1, max_days); }
Bonus iterative solution
long compute_time_iter(vector<long> machines, long production_goal, long min_days, long max_days){ if(machines.size()==1) return max_days; long mid; long production; while(min_days != max_days){ mid = ( min_days + max_days )/2; production = 0; for(int i =0; i< machines.size();i++) production+=floor(mid/machines[i]); if(production >= production_goal) max_days = mid; else min_days = mid+1; } return min_days; }
Seems like cookies are disabled on this browser, please enable them to open this website
Minimum Time Required
You are viewing a single comment's thread. Return to all comments →
Here is my c++ solution
Bonus iterative solution