File tree Expand file tree Collapse file tree 1 file changed +21
-17
lines changed
solution/1800-1899/1870.Minimum Speed to Arrive on Time Expand file tree Collapse file tree 1 file changed +21
-17
lines changed Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public:
3
3
int minSpeedOnTime (vector<int >& dist, double hour) {
4
- int left = 1 , right = 1e7 ;
5
- while (left < right) {
6
- int mid = (left + right) >> 1 ;
7
- if (check (dist, mid, hour)) {
8
- right = mid;
4
+ if (dist.size () > ceil (hour)) {
5
+ return -1 ;
6
+ }
7
+ const int m = 1e7 ;
8
+ int l = 1 , r = m + 1 ;
9
+ int n = dist.size ();
10
+ auto check = [&](int v) {
11
+ double s = 0 ;
12
+ for (int i = 0 ; i < n; ++i) {
13
+ double t = dist[i] * 1.0 / v;
14
+ s += i == n - 1 ? t : ceil (t);
15
+ }
16
+ return s <= hour;
17
+ };
18
+ while (l < r) {
19
+ int mid = (l + r) >> 1 ;
20
+ if (check (mid)) {
21
+ r = mid;
9
22
} else {
10
- left = mid + 1 ;
23
+ l = mid + 1 ;
11
24
}
12
25
}
13
- return check (dist, left, hour) ? left : -1 ;
14
- }
15
-
16
- bool check (vector<int >& dist, int speed, double hour) {
17
- double res = 0 ;
18
- for (int i = 0 ; i < dist.size (); ++i) {
19
- double cost = dist[i] * 1.0 / speed;
20
- res += (i == dist.size () - 1 ? cost : ceil (cost));
21
- }
22
- return res <= hour;
26
+ return l > m ? -1 : l;
23
27
}
24
- };
28
+ };
You can’t perform that action at this time.
0 commit comments