Minimum Speed to Arrive on Time LeetCode solution in C++
1class Solution {2bool canReachInTime(const vector<int> &dist, const double hour, int speed) {3double time = 0;4for (int i = 0; i < dist.size() - 1; ++i) time += ((dist[i] + speed - 1) / speed);56time += ((double)dist.back()) / speed;7return time <= hour;8}910public:11int minSpeedOnTime(vector<int> &dist, double hour) {12int N = dist.size();13if (hour <= (double)(N - 1)) return -1;1415int lo = 1, hi = 1e7, mi;16while (lo < hi) {17mi = (lo + hi) / 2;18if (canReachInTime(dist, hour, mi))19hi = mi;20else21lo = mi + 1;22}2324return hi;25}26};