2025-10-11 21:08:12 +0300 MSK
Maximum Total Damage With Spell Casting
Links
Code
class Solution:
def maximumTotalDamage(self, power):
count = Counter(power)
vec = [(-(10**9), 0)]
for k in sorted(count.keys()):
vec.append((k, count[k]))
n = len(vec)
f = [0] * n
mx = 0
j = 1
for i in range(1, n):
while j < i and vec[j][0] < vec[i][0] - 2:
mx = max(mx, f[j])
j += 1
f[i] = mx + vec[i][0] * vec[i][1]
return max(f)