1
1
package g3101_3200.s3186_maximum_total_damage_with_spell_casting
2
2
3
3
// #Medium #Array #Hash_Table #Dynamic_Programming #Sorting #Binary_Search #Two_Pointers #Counting
4
- // #2024_06_21_Time_51_ms_(99.29%)_Space_60.8_MB_(78.34 %)
4
+ // #2024_06_22_Time_1106_ms_(92.73%)_Space_81.1_MB_(41.82 %)
5
5
6
6
import kotlin.math.max
7
7
import kotlin.math.min
@@ -24,9 +24,10 @@ class Solution {
24
24
}
25
25
val dp = LongArray (maxPower + 6 )
26
26
dp[1 ] = counts[1 ].toLong()
27
- dp[2 ] = max((counts[2 ] * 2L ), dp[1 ])
27
+ dp[2 ] = max((counts[2 ] * 2L ).toDouble() , dp[1 ].toDouble()).toLong( )
28
28
for (i in 3 .. maxPower) {
29
- dp[i] = max((counts[i] * i + dp[i - 3 ]), max(dp[i - 1 ], dp[i - 2 ]))
29
+ dp[i] = max((counts[i] * i + dp[i - 3 ]).toDouble(), max(dp[i - 1 ].toDouble(), dp[i - 2 ].toDouble()))
30
+ .toLong()
30
31
}
31
32
return dp[maxPower]
32
33
}
@@ -44,12 +45,15 @@ class Solution {
44
45
count++
45
46
} else {
46
47
val curVal = max(
47
- (curPower * count + prevs[3 ]),
48
- max(prevs[1 ], prevs[2 ])
48
+ (curPower.toLong() * count + prevs[3 ]).toDouble( ),
49
+ max(prevs[1 ].toDouble() , prevs[2 ].toDouble() )
49
50
)
50
- val diff = min((p - curPower), (prevs.size - 1 ))
51
+ .toLong()
52
+ val diff = min((p - curPower).toDouble(), (prevs.size - 1 ).toDouble()).toInt()
51
53
val nextCurVal =
52
- if ((diff == 1 )) 0 else max(prevs[3 ], max(curVal, prevs[2 ]))
54
+ if ((diff == 1 )) 0 else max(prevs[3 ].toDouble(), max(curVal.toDouble(), prevs[2 ].toDouble()))
55
+ .toLong()
56
+ // Shift the values in prevs[].
53
57
var k = prevs.size - 1
54
58
if (diff < prevs.size - 1 ) {
55
59
while (k > diff) {
0 commit comments