Problem Statement
You are at the gym and you want to do some training. The training process is divided into one-minute segments. During each minute, you can either train or rest.
If you choose to train during a minute, it increases your pulse by trainChange. That is, if your pulse was X, it becomes X + trainChange after a minute of training. You never want your pulse to exceed maxPulse, so you can train only if X + trainChange is less than or equal to maxPulse.
If you choose to rest during a minute, it decreases your pulse by restChange. That is, if your pulse was X, it becomes X - restChange after a minute of rest. However, your pulse never falls below minPulse, so if X - restChange is less than minPulse, your pulse becomes minPulse instead of X - restChange.
Your pulse is initially minPulse. You want to train for a total of needToTrain minutes (these minutes don't need to be consecutive). Return the minimum number of minutes your complete training process will take. If you can't train for needToTrain minutes, return -1 instead.
Definition
- Class:
- GymTraining
- Method:
- trainingTime
- Parameters:
- int, int, int, int, int
- Returns:
- int
- Method signature:
- int trainingTime(int needToTrain, int minPulse, int maxPulse, int trainChange, int restChange)
- (be sure your method is public)
Constraints
- minPulse will be between 50 and 200, inclusive.
- maxPulse will be between minPulse and 200, inclusive.
- needToTrain, trainChange and restChange will each be between 1 and 200, inclusive.
Examples
5
70
120
25
15
Returns: 10
Your training process goes as follows: Time Activity Pulse after activity 1 train 95 2 train 120 3 rest 105 4 rest 90 5 train 115 6 rest 100 7 rest 85 8 train 110 9 rest 95 10 train 120
100
50
100
5
200
Returns: 109
After 10 consecutive minutes of training, your pulse rises from 50 to 100. Then, after a minute of rest, it falls back to 50. You will do this nine times and then finish with 10 consecutive minutes of training, for a total of 9*(10+1)+10 = 109 minutes.
1
60
70
11
11
Returns: -1
A minute of training raises your pulse from 60 to 71, which exceeds your maximum pulse. Therefore, it is not possible to do any training.
200
50
200
150
1
Returns: 30050
In this case, you need a lot of time to finish your training.
19
89
143
17
13
Returns: 40
1
50
50
1
1
Returns: -1
1
199
200
1
1
Returns: 1
200
50
200
150
150
Returns: 399
200
50
200
1
150
Returns: 201
200
50
200
1
1
Returns: 250
200
50
200
200
200
Returns: -1
187
79
170
177
154
Returns: -1
189
140
164
29
140
Returns: -1
16
72
199
177
117
Returns: -1
163
95
164
186
74
Returns: -1
52
55
153
146
135
Returns: -1
149
89
170
79
35
Returns: 593
101
167
183
14
53
Returns: 201
159
63
126
2
169
Returns: 164
173
94
181
64
75
Returns: 345
173
63
166
50
29
Returns: 468
91
72
136
2
65
Returns: 93
25
77
168
8
160
Returns: 27
120
55
112
39
67
Returns: 239
12
108
171
59
109
Returns: 23
163
52
166
38
125
Returns: 217
138
55
172
69
29
Returns: 463
7
77
160
29
148
Returns: 10
134
85
137
8
169
Returns: 156
135
76
147
62
45
Returns: 403
175
65
188
21
109
Returns: 209
185
81
196
80
10
Returns: 1654
152
77
187
33
173
Returns: 202
154
57
133
53
67
Returns: 307
39
59
196
123
158
Returns: 77
135
102
166
34
102
Returns: 269
146
155
198
9
76
Returns: 182
36
158
186
18
185
Returns: 71
61
110
192
21
117
Returns: 81
140
88
184
57
135
Returns: 279
32
74
187
2
19
Returns: 32
38
69
192
58
154
Returns: 56
17
71
134
9
100
Returns: 19
1
72
200
25
182
Returns: 1
108
53
149
96
59
Returns: 322
22
130
192
61
191
Returns: 43
1
137
167
11
160
Returns: 1
2
66
142
60
178
Returns: 3
4
87
124
4
180
Returns: 4
6
125
155
22
149
Returns: 11
24
88
198
1
175
Returns: 24
26
55
91
23
168
Returns: 51
118
66
170
3
124
Returns: 121
137
118
196
13
185
Returns: 159
171
53
115
59
72
Returns: 341
69
50
173
85
9
Returns: 707
121
72
126
35
4
Returns: 1167
140
76
185
59
3
Returns: 2857
149
81
146
63
2
Returns: 4810
89
56
188
125
1
Returns: 11082
161
58
191
115
1
Returns: 18543
20
60
150
5
13
Returns: 21
100
100
101
5
1
Returns: -1
40
60
80
10
5
Returns: 116
50
100
101
10
1
Returns: -1
3
70
100
20
50
Returns: 5
10
100
101
1
10
Returns: 19
1
50
200
1
1
Returns: 1
10
50
55
1
10
Returns: 11
100
50
50
10
1
Returns: -1
10
50
100
30
80
Returns: 19
200
199
199
20
1
Returns: -1
2
60
70
10
20
Returns: 3
200
50
200
100
160
Returns: 399
50
100
120
19
17
Returns: 148
10
100
200
100
1
Returns: 910
3
50
100
30
100
Returns: 5
5
80
90
9
20
Returns: 9
10
100
200
150
50
Returns: -1
184
79
126
29
66
Returns: 367
50
50
100
5
2
Returns: 150
150
50
60
8
10
Returns: 299
5
50
200
2
1
Returns: 5
100
50
51
100
50
Returns: -1
100
60
70
20
30
Returns: -1
8
50
60
11
9
Returns: -1
5
50
100
1
5
Returns: 5
5
50
60
10
6
Returns: 13
10
50
100
25
100
Returns: 14
200
50
200
74
47
Returns: 512
20
50
200
150
100
Returns: 58
2
50
55
7
6
Returns: -1
10
50
60
9
200
Returns: 19
5
100
104
2
6
Returns: 7
80
50
100
1
80
Returns: 81
1
100
200
1
1
Returns: 1
10
50
100
30
10
Returns: 35
20
50
200
50
101
Returns: 29
199
100
120
1
100
Returns: 208
2
50
200
2
2
Returns: 2