Problem Statement
Fox Ciel was very bored, so she invented a single player game. The rules of the game are:
You start with 0 points.
You make exactly nA+nB moves.
You have two types of moves available. These are called move A and move B.
Exactly nA times you will make move A. Exactly nB times you will make move B. The moves can be in any order.
The moves affect your score in the following ways:
- Each time you make move A, you add scoreA to your score.
- Each time you make move B, you multiply your score by scoreB.
You are given
scoreA = paramA/1000.0 scoreB = paramB/1000.0
Return the maximum possible score after nA+nB moves.
Definition
- Class:
- FoxPlayingGame
- Method:
- theMax
- Parameters:
- int, int, int, int
- Returns:
- double
- Method signature:
- double theMax(int nA, int nB, int paramA, int paramB)
- (be sure your method is public)
Notes
- The returned value must have an absolute or relative error less than 1e-9.
Constraints
- nA will be between 0 and 50, inclusive.
- nB will be between 0 and 50, inclusive.
- paramA will be between -10000 and 10000, inclusive.
- paramB will be between -2000 and 2000, inclusive.
Examples
5
4
3000
2000
Returns: 240.0
scoreA = 3000/1000 = 3 scoreB = 2000/1000 = 2 The optimal order of operations is: (3 + 3 + 3 + 3 + 3) * 2 * 2 * 2 * 2 = 240
3
3
2000
100
Returns: 6.0
scoreA = 2000/1000 = 2 scoreB = 100/1000 = 0.1 Multiplying the score by scoreB decreases its absolute value, so it's better to do all multiplications before additions. Thus, the optimal order of operations is: 0 * 0.1 * 0.1 * 0.1 + 2 + 2 + 2 = 6
4
3
-2000
2000
Returns: -8.0
Multiplying the score by scoreB increases its absolute value, but given that scoreA is negative, the overall score will be negative as well, so it's better to do multiplications before additions again to keep the absolute value small.
5
5
2000
-2000
Returns: 160.0
Multiplication increases the absolute value of the score, but if you do all 5 multiplications after additions, you'll end up with negative score. Thus, the optimal order of operations is: (0 * (-2) + 2 + 2 + 2 + 2 + 2) * (-2) * (-2) * (-2) * (-2) = 160
50
50
10000
2000
Returns: 5.62949953421312E17
41
34
9876
-1234
Returns: 515323.9982341775
31
16
-1234
-1569
Returns: 32886.75382013723
31
17
-7717
-1322
Returns: 27526.115739436027
23
34
-9422
-180
Returns: 39.00708
23
35
-3581
-599
Returns: 49.335437
41
19
414
-509
Returns: 16.974
41
20
5511
-918
Returns: 225.951
0
0
10000
2000
Returns: 0.0
0
0
8481
-512
Returns: 0.0
0
1
-414
-1851
Returns: 0.0
0
1
4144
2000
Returns: 0.0
1
0
1885
424
Returns: 1.885
1
0
-5153
31
Returns: -5.153
1
1
-4142
-321
Returns: 1.329582
1
1
-951
-243
Returns: 0.231093
1
1
2534
-1001
Returns: 2.534
1
2
4515
-1002
Returns: 4.533078059999999
50
1
5293
1403
Returns: 371.30395000000004
45
1
-5918
-1
Returns: 0.26631
25
9
0
1592
Returns: 0.0
39
50
-1
-2
Returns: 7.8E-5
40
45
-1
1
Returns: -4.0000000000000037E-137
31
49
1000
1000
Returns: 31.0
22
23
-1000
-1000
Returns: 22.0
37
41
-1001
1001
Returns: -37.037
43
12
999
-1001
Returns: 43.47532863383772
41
23
-104
-1000
Returns: 4.264
40
9
-4796
-146
Returns: 28.00864
26
26
-8930
1839
Returns: -232.18
14
34
2898
-912
Returns: 40.572
18
14
-8184
-412
Returns: 60.69254399999999
25
7
-2350
-564
Returns: 33.135
47
44
9508
-171
Returns: 446.876
4
41
-5461
1574
Returns: -21.844
29
5
-4769
-1401
Returns: 746.476253539108
38
43
-6852
482
Returns: -6.118198950390014E-12
23
49
8654
-861
Returns: 199.042
47
34
4635
271
Returns: 217.845
7
11
7987
-1398
Returns: 1594.2390346449097
26
34
3143
-187
Returns: 81.71799999999999
17
20
-6315
522
Returns: -2.4223245811644934E-4
45
41
3155
702
Returns: 141.975
18
27
5835
-1325
Returns: 158097.93614918503
47
26
1529
1709
Returns: 8.08721472123053E7
38
8
-4286
-1678
Returns: 6100.697043704332
45
15
-3938
1389
Returns: -177.21
34
50
1662
-4
Returns: 56.507999999999996
27
13
-7130
1387
Returns: -192.51
14
27
-3023
-872
Returns: 36.904784
49
12
-9628
-687
Returns: 324.107364
6
13
-5577
1913
Returns: -33.462
13
42
6461
-1089
Returns: 3015.8799017856522
14
31
-602
-1575
Returns: 1.1000738188400714E7
39
22
8645
-1529
Returns: 3844096.5203036075
38
0
493
-1024
Returns: 18.733999999999998
12
12
-7128
1651
Returns: -85.536
3
13
-8205
-707
Returns: 17.402805
50
50
-10000
-2000
Returns: 2.81474976710656E17
50
49
-10000
-2000
Returns: 2.81474976710656E17
50
50
-10000
2000
Returns: -500.0
50
50
10000
-2000
Returns: 5.62949953421312E17
50
49
10000
-2000
Returns: 1.40737488355328E17
50
50
1
1001
Returns: 0.052562241621737275
50
50
1
-1001
Returns: 0.052562241621737275
50
50
-10000
0
Returns: -0.0
50
0
-9188
0
Returns: -459.40000000000003
48
0
-1004
0
Returns: -48.192
50
50
1160
116
Returns: 57.99999999999999
5
7
-3000
-2000
Returns: 1920.0
2
4
-1000
-500
Returns: 1.0
5
5
-5000
-500
Returns: 12.5
9
9
-1500
-1
Returns: 0.0135
49
49
-1000
-500
Returns: 24.5
1
2
-3000
-2000
Returns: 6.0
4
5
-1
-1
Returns: 4.0E-6
50
50
-1000
-500
Returns: 25.0
1
3
-5000
-500
Returns: 2.5
2
50
-10000
-999
Returns: 19.98
37
8
-5173
-564
Returns: 107.950164
1
4
-100
-3
Returns: 3.0000000000000003E-4
50
50
-1
-1
Returns: 5.0E-5
10
10
-10000
-500
Returns: 50.0
20
21
-2000
-900
Returns: 36.0
2
4
-100
-100
Returns: 0.020000000000000004
8
10
-2000
-500
Returns: 8.0
5
5
-100
-100
Returns: 0.05
25
25
500
-2000
Returns: 2.097152E8
37
49
-5843
-483
Returns: 104.420253
2
3
-5000
-2000
Returns: 80.0
50
48
-1000
-50
Returns: 2.5
50
50
1000
1000
Returns: 50.0
4
4
-2000
-500
Returns: 4.0
40
40
-100
-300
Returns: 1.2
1
1
-1000
-1000
Returns: 1.0
3
3
-2000
-100
Returns: 0.6000000000000001
3
3
-2000
100
Returns: -0.006000000000000002
5
5
-1000
200
Returns: -0.0016000000000000003
5
5
-10000
-100
Returns: 5.0
1
0
-1000
0
Returns: -1.0
10
10
-1000
-100
Returns: 1.0
2
2
-10000
1999
Returns: -20.0
5
5
-10000
-500
Returns: 25.0
40
0
-1000
0
Returns: -40.0
5
5
-1000
-2000
Returns: 160.0
2
2
2
0
Returns: 0.0040
3
3
-1000
-750
Returns: 2.25
4
5
-1000
-100
Returns: 0.4
1
2
6107
0
Returns: 6.107
50
50
-1000
-1
Returns: 0.05
5
4
-2000
-500
Returns: 5.0
5
5
-1000
-100
Returns: 0.5
49
49
-3000
-675
Returns: 99.22500000000001
1
10
-1000
-100
Returns: 0.1
5
10
-300
-100
Returns: 0.15000000000000002
5
5
-2000
-50
Returns: 0.5
10
3
-1000
500
Returns: -1.25
10
1
-1000
-2000
Returns: 20.0
50
10
-10000
500
Returns: -0.48828125
2
3
-2000
-100
Returns: 0.4
1
0
2000
500
Returns: 2.0
10
10
-600
-1500
Returns: 230.66015625
50
50
-9999
567
Returns: -2.3882485204200707E-10
1
0
-10
0
Returns: -0.01
50
3
-1000
-500
Returns: 25.0
2
5
-2000
-500
Returns: 2.0
1
50
-10000
-1
Returns: 0.01
10
10
2000
-800
Returns: 20.0
1
10
-2
-999
Returns: 0.001998
10
0
-1
-200
Returns: -0.01
3
0
-2000
-100
Returns: -6.0
4
4
-5000
-500
Returns: 10.0
2
50
-2000
2000
Returns: -4.0
5
0
-1000
-2000
Returns: -5.0
10
6
-2000
-500
Returns: 10.0
50
0
-5000
-1000
Returns: -250.0
49
49
-9999
1000
Returns: -489.951
3
10
-3000
-500
Returns: 4.5
10
3
-1
-1
Returns: 1.0E-5
50
50
-1500
-500
Returns: 37.5
10
5
-10000
-900
Returns: 90.0
50
50
9432
-1868
Returns: 1.747500831749391E16
1
5
-1000
-1
Returns: 0.0010
3
3
100
-100
Returns: 0.30000000000000004
1
10
-2000
-200
Returns: 0.4
11
40
-100
-3
Returns: 0.0033000000000000004
10
0
-1000
0
Returns: -10.0
6
6
-2000
-2000
Returns: 384.0
1
2
-1000
-500
Returns: 0.5
1
0
-2000
-5
Returns: -2.0
4
5
-2000
-500
Returns: 4.0
10
10
-500
-500
Returns: 2.5
5
5
10000
2000
Returns: 1600.0
3
20
-2000
100
Returns: -6.000000000000007E-20
1
1
-1
0
Returns: -0.0
1
10
-100
-500
Returns: 0.05
5
5
-2000
-1
Returns: 0.01
1
0
2000
100
Returns: 2.0
1
1
-500
-500
Returns: 0.25
4
3
-2000
-200
Returns: 1.6
10
12
-500
-700
Returns: 3.5
10
10
-2000
-100
Returns: 2.0
5
0
-1000
-200
Returns: -5.0
1
3
-500
-500
Returns: 0.25
5
2
-1000
1
Returns: -4.9999999999999996E-6
5
5
-2000
-500
Returns: 5.0
10
10
-2345
-2000
Returns: 12006.400000000001
5
5
-3000
-2000
Returns: 480.0
0
0
0
0
Returns: 0.0
2
3
-2000
-2000
Returns: 32.0
1
3
-1000
-100
Returns: 0.1
50
50
-1000
1
Returns: -5.000000000000005E-149
10
9
-2000
-100
Returns: 2.0
2
3
1000
-2000
Returns: 8.0
46
3
1696
-969
Returns: 78.01599999999999
1
9
-1000
-200
Returns: 0.2
1
2
-1000
-1000
Returns: 1.0
5
3
-2000
-200
Returns: 2.0
10
10
1000
-10
Returns: 10.0
10
10
-100
-100
Returns: 0.1
2
2
-1000
-2000
Returns: 4.0
1
0
2000
2000
Returns: 2.0
1
5
-7966
-373
Returns: 2.971318
1
3
-5000
-2000
Returns: 40.0
5
4
-2000
-100
Returns: 1.0
3
3
-100
-100
Returns: 0.030000000000000006
3
5
-2000
-200
Returns: 1.2000000000000002
50
2
-5000
-1500
Returns: 375.0
1
0
-1
0
Returns: -0.0010
10
6
-1500
1500
Returns: -15.0
1
10
-1000
-500
Returns: 0.5
29
16
-4552
-1079
Returns: 412.9732500259706
50
50
-1000
-200
Returns: 10.0
3
4
-2000
-500
Returns: 3.0
3
2
-3706
0
Returns: -0.0
1
1
-1000
-2000
Returns: 2.0
4
5
-3000
-800
Returns: 9.600000000000001
6
5
-2000
-500
Returns: 6.0
2
5
-2000
-2000
Returns: 128.0
1
3
1000
-500
Returns: 1.0
13
13
-2000
-100
Returns: 2.6
10
5
-5000
-500
Returns: 25.0
1
3
500
-500
Returns: 0.5
5
5
-3000
-200
Returns: 3.0
1
1
-1000
0
Returns: -0.0
5
5
2000
2000
Returns: 320.0
50
0
-10000
0
Returns: -500.0
2
11
-2000
-100
Returns: 0.4
2
4
-5000
-200
Returns: 2.0
10
10
2000
-600
Returns: 20.0
5
5
-2000
0
Returns: -0.0
1
3
-10000
-999
Returns: 9.99
49
49
-10000
1
Returns: -4.9000000000000054E-145
2
4
-3000
-200
Returns: 1.2000000000000002
2
2
-1000
10
Returns: -2.0E-4
3
0
-2000
-500
Returns: -6.0
2
3
-5000
-100
Returns: 1.0
40
20
-2000
400
Returns: -8.79609302220801E-7
50
0
-10000
-1
Returns: -500.0
2
1
-1000
-1000
Returns: 2.0
50
0
-5000
-500
Returns: -250.0
10
10
10
0
Returns: 0.1
5
5
-2000
-1999
Returns: 319.2007996001001
5
4
-3000
-100
Returns: 1.5
1
1
-1000
100
Returns: -0.1
1
2
-5000
0
Returns: -0.0
1
0
-1000
-1000
Returns: -1.0
10
0
10000
2000
Returns: 100.0
5
5
-5000
-100
Returns: 2.5
50
50
-2000
-100
Returns: 10.0
50
50
-3000
-100
Returns: 15.0
5
6
-2000
-100
Returns: 1.0
49
49
-10000
1192
Returns: -490.0
10
11
-1000
-10
Returns: 0.1
5
4
-1000
-200
Returns: 1.0
1
2
-2000
-2000
Returns: 4.0
1
0
1000
2000
Returns: 1.0
50
50
-10000
-1
Returns: 0.5
50
50
-300
-70
Returns: 1.05
4
0
-2000
-2000
Returns: -8.0
10
20
-2000
-10
Returns: 0.2
3
0
-1000
-750
Returns: -3.0
5
0
-2000
-200
Returns: -10.0
2
0
-2000
-100
Returns: -4.0
5
0
2000
2000
Returns: 10.0
3
18
-2548
-230
Returns: 1.7581200000000001
50
50
900
2000
Returns: 5.066549580791808E16
5
5
-3000
-100
Returns: 1.5
1
0
1
0
Returns: 0.0010
5
0
-1000
0
Returns: -5.0
1
1
-1000
-500
Returns: 0.5
1
0
-1000
-500
Returns: -1.0
1
1
-2000
2000
Returns: -2.0
3
0
-1000
-2000
Returns: -3.0
1
1
-100
0
Returns: -0.0
10
10
-2000
-2000
Returns: 10240.0
5
5
5000
2000
Returns: 800.0
10
0
-1200
0
Returns: -12.0
2
0
-2000
-500
Returns: -4.0
1
10
-2000
-500
Returns: 1.0
10
0
-1100
-100
Returns: -11.0
3
1
-2000
-500
Returns: 3.0
2
2
-500
-2000
Returns: 2.0
3
3
-1
1
Returns: -3.0E-12
50
50
-5000
-2000
Returns: 1.40737488355328E17
5
5
-100
900
Returns: -0.29524500000000004
1
1
10000
2000
Returns: 20.0
5
5
-2000
-300
Returns: 3.0
4
5
-5000
-500
Returns: 10.0
5
4
-6000
-2000
Returns: 240.0
49
49
-9998
-1997
Returns: 2.56232604543883936E17
2
2
-3000
-2000
Returns: 12.0
1
1
-1000
500
Returns: -0.5
5
5
-2000
-100
Returns: 1.0
41
17
-666
-500
Returns: 13.653
50
50
2000
100
Returns: 100.0
4
3
-2
-2
Returns: 1.6E-5
10
1
-1000
500
Returns: -5.0
4
4
-3000
-2000
Returns: 96.0
50
50
8000
0
Returns: 400.0
50
50
3000
-200
Returns: 150.0
10
49
-1000
-900
Returns: 9.0
1
0
7
0
Returns: 0.0070
2
3
-2000
-500
Returns: 2.0
10
19
-1
-1
Returns: 1.0E-5
50
50
-10000
-10
Returns: 5.0
10
0
-10000
0
Returns: -100.0
4
0
-5000
-500
Returns: -20.0
10
0
10000
1
Returns: 100.0
1
0
-2000
-300
Returns: -2.0
10
10
-1345
-5
Returns: 0.06725
1
10
-2000
-5
Returns: 0.01
1
5
2000
2000
Returns: 64.0
1
2
-10000
-2000
Returns: 20.0
10
1
-10
0
Returns: -0.0
5
4
3000
1000
Returns: 15.0
50
50
-1000
-100
Returns: 5.0
5
5
500
500
Returns: 2.5
3
0
-1000
0
Returns: -3.0
4
3
2000
-2000
Returns: 32.0
1
0
-500
-500
Returns: -0.5
1
1
-100
-100
Returns: 0.010000000000000002
40
37
-9874
589
Returns: -1.2325910823419878E-6
50
50
-1000
-999
Returns: 49.95
4
2
-5000
-1700
Returns: 34.0
50
50
-4000
-500
Returns: 100.0
4
0
-2000
2000
Returns: -8.0
5
3
-5000
-500
Returns: 12.5
10
3
-1000
99
Returns: -0.009702990000000002
1
0
-300
0
Returns: -0.3
1
0
-1000
-1
Returns: -1.0
1
5
-2000
-500
Returns: 1.0
2
2
-1000
2000
Returns: -2.0
10
10
-10
0
Returns: -0.0
50
49
-5000
-500
Returns: 125.0
1
2
900
2000
Returns: 3.6
5
0
-2000
-500
Returns: -10.0
10
0
-1000
-100
Returns: -10.0
50
50
-900
900
Returns: -0.23191988432940538
5
5
-1000
-500
Returns: 2.5
49
49
-999
-999
Returns: 48.902049
10
10
-2000
500
Returns: -0.01953125
50
50
1111
1111
Returns: 10724.745875895354
10
9
-2000
-2000
Returns: 10240.0
10
10
-1000
-10
Returns: 0.1
0
10
2000
2000
Returns: 0.0