Problem Statement
Magical Girls are girls who have magical powers. They fight against evil witches to protect the Earth.
You, one of the Magical Girls, are now at point (0, 0) on the plane. You found an evil witch at point (x, y), so you will attack her by Attack Magic.
The range of your Attack Magic is a square with side length 2d centered at your location. That is, if you are at point (u, v), the square which indicates the range of your magic has four vertices (u+d, v+d), (u-d, v+d), (u-d, v-d) and (u+d, v-d).
Before casting Attack Magic, you may move to any point in the plane. Return the minimum distance you have to move so that the evil witch is inside or on the edge of the square.
Definition
- Class:
- MagicalGirlLevelOneDivTwo
- Method:
- theMinDistance
- Parameters:
- int, int, int
- Returns:
- double
- Method signature:
- double theMinDistance(int d, int x, int y)
- (be sure your method is public)
Notes
- The distance between two points (x1, y1) and (x2, y2) is sqrt((x2-x1)^2 + (y2-y1)^2).
- The returned value must have an absolute or relative error less than 1e-9.
Constraints
- d will be between 1 and 500, inclusive.
- x and y will each be between -500 and 500, inclusive.
Examples
5
10
10
Returns: 7.0710678118654755
Moving to (5, 5) achieves the minimum distance. The distance is sqrt(5*5 + 5*5) = 7.0710678118654755.
5
10
3
Returns: 5.0
Moving to (5, 0) achieves the minimum distance. The distance is sqrt(5*5 + 0*0) = 5.
5
-8
-6
Returns: 3.1622776601683795
5
3
2
Returns: 0.0
The evil witch is already inside of the square.
24
24
-24
Returns: 0.0
345
-471
333
Returns: 126.0
1
1
1
Returns: 0.0
1
-1
-1
Returns: 0.0
1
1
-1
Returns: 0.0
1
2
0
Returns: 1.0
1
1
0
Returns: 0.0
1
0
-1
Returns: 0.0
1
3
5
Returns: 4.47213595499958
1
132
-132
Returns: 185.26197667087544
1
500
500
Returns: 705.6925676241744
1
-500
-500
Returns: 705.6925676241744
8
8
6
Returns: 0.0
8
8
-79
Returns: 71.0
8
6
-8
Returns: 0.0
8
79
-8
Returns: 71.0
9
9
13
Returns: 4.0
9
9
-3
Returns: 0.0
123
123
-123
Returns: 0.0
123
-123
-123
Returns: 0.0
123
124
0
Returns: 1.0
500
427
-116
Returns: 0.0
156
236
-113
Returns: 80.0
83
371
-319
Returns: 372.34392703520757
180
-95
445
Returns: 265.0
56
6
170
Returns: 114.0
140
-135
151
Returns: 11.0
454
399
-449
Returns: 0.0
426
500
155
Returns: 74.0
414
318
103
Returns: 0.0
240
470
-440
Returns: 304.7950130825634
356
-217
-10
Returns: 0.0
374
-21
162
Returns: 0.0
231
-378
-416
Returns: 236.29219199965115
275
324
-123
Returns: 49.0
494
315
-392
Returns: 0.0
29
-480
282
Returns: 517.117008035899
409
-454
472
Returns: 77.42092740338364
289
94
149
Returns: 0.0
290
348
287
Returns: 58.0
171
202
-107
Returns: 31.0
291
326
-487
Returns: 199.1004771465905
221
-466
476
Returns: 353.62409420173844
74
-192
-200
Returns: 172.6267650163207
208
242
297
Returns: 95.2732911156112
86
434
343
Returns: 432.6118352518803
193
109
-50
Returns: 0.0
319
-418
-362
Returns: 107.93516572461452
430
118
258
Returns: 0.0
64
486
383
Returns: 529.0037807048263
398
108
-356
Returns: 0.0
130
291
-85
Returns: 161.0
425
319
163
Returns: 0.0
299
-417
425
Returns: 172.6267650163207
275
482
375
Returns: 229.88910370002316
36
-345
51
Returns: 309.3638634359223
191
130
-482
Returns: 291.0
156
-329
-5
Returns: 173.0
466
-38
-93
Returns: 0.0
41
172
-120
Returns: 152.97712247261026
166
-152
115
Returns: 0.0
103
-59
-266
Returns: 163.0
158
-288
-177
Returns: 131.38112497615478
478
-336
145
Returns: 0.0
383
-5
229
Returns: 0.0
472
-442
131
Returns: 0.0
129
-453
254
Returns: 347.2765468614315
187
-328
320
Returns: 193.82982226685345
246
-342
376
Returns: 161.60445538412608
7
-320
266
Returns: 406.2634613154375
418
396
-106
Returns: 0.0
50
100
-100
Returns: 70.71067811865476
100
-1
-1
Returns: 0.0
1
0
0
Returns: 0.0
2
-4
-4
Returns: 2.8284271247461903
5
3
3
Returns: 0.0
2
4
0
Returns: 2.0
5
2
2
Returns: 0.0
5
4
-10
Returns: 5.0
1
4
4
Returns: 4.242640687119285
1
0
10
Returns: 9.0
10
10
200
Returns: 190.0
7
8
8
Returns: 1.4142135623730951
10
-1
-1
Returns: 0.0
5
5
10
Returns: 5.0
5
12
0
Returns: 7.0
9
10
-10
Returns: 1.4142135623730951
5
11
9
Returns: 7.211102550927978
1
-2
-3
Returns: 2.23606797749979
20
15
28
Returns: 8.0
5
-10
-2
Returns: 5.0
2
1
4
Returns: 2.0
2
-10
-10
Returns: 11.313708498984761
3
5
4
Returns: 2.23606797749979
2
0
3
Returns: 1.0
5
7
0
Returns: 2.0
5
3
10
Returns: 5.0
5
10
0
Returns: 5.0
3
20
0
Returns: 17.0
2
1
3
Returns: 1.0
100
99
99
Returns: 0.0
5
5
0
Returns: 0.0
100
10
10
Returns: 0.0
50
1
499
Returns: 449.0
12
10
10
Returns: 0.0
101
0
100
Returns: 0.0