import math
def minDamage(power: int, damage: list[int], health: list[int]) -> int:
n = len(damage)
enemies = []
# Precalculate (damage, time_to_kill) for each enemy
for d, h in zip(damage, health):
time_to_kill = (h + power - 1) // power # Ceiling division
enemies.append((d, time_to_kill))
# Custom sort using cross-multiplication (D_A * T_B > D_B * T_A)
# Python sorts ascending by default, so we invert the comparison logic
from functools import cmp_to_key
def compare(a, b):
# a = (d_a, t_a), b = (d_b, t_b)
if a[0] * b[1] > b[0] * a[1]:
return -1 # 'a' comes before 'b'
return 1
enemies.sort(key=cmp_to_key(compare))
total_dps = sum(d for d, t in enemies)
total_damage_taken = 0
# Process enemies in optimal order
for d, t in enemies:
total_damage_taken += total_dps * t
total_dps -= d # Enemy is dead, remove its damage output
return total_damage_taken
aW1wb3J0IG1hdGgKCmRlZiBtaW5EYW1hZ2UocG93ZXI6IGludCwgZGFtYWdlOiBsaXN0W2ludF0sIGhlYWx0aDogbGlzdFtpbnRdKSAtPiBpbnQ6CiAgICBuID0gbGVuKGRhbWFnZSkKICAgIGVuZW1pZXMgPSBbXQogICAgCiAgICAjIFByZWNhbGN1bGF0ZSAoZGFtYWdlLCB0aW1lX3RvX2tpbGwpIGZvciBlYWNoIGVuZW15CiAgICBmb3IgZCwgaCBpbiB6aXAoZGFtYWdlLCBoZWFsdGgpOgogICAgICAgIHRpbWVfdG9fa2lsbCA9IChoICsgcG93ZXIgLSAxKSAvLyBwb3dlciAgIyBDZWlsaW5nIGRpdmlzaW9uCiAgICAgICAgZW5lbWllcy5hcHBlbmQoKGQsIHRpbWVfdG9fa2lsbCkpCiAgICAKICAgICMgQ3VzdG9tIHNvcnQgdXNpbmcgY3Jvc3MtbXVsdGlwbGljYXRpb24gKERfQSAqIFRfQiA+IERfQiAqIFRfQSkKICAgICMgUHl0aG9uIHNvcnRzIGFzY2VuZGluZyBieSBkZWZhdWx0LCBzbyB3ZSBpbnZlcnQgdGhlIGNvbXBhcmlzb24gbG9naWMKICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBjbXBfdG9fa2V5CiAgICAKICAgIGRlZiBjb21wYXJlKGEsIGIpOgogICAgICAgICMgYSA9IChkX2EsIHRfYSksIGIgPSAoZF9iLCB0X2IpCiAgICAgICAgaWYgYVswXSAqIGJbMV0gPiBiWzBdICogYVsxXToKICAgICAgICAgICAgcmV0dXJuIC0xICAjICdhJyBjb21lcyBiZWZvcmUgJ2InCiAgICAgICAgcmV0dXJuIDEKCiAgICBlbmVtaWVzLnNvcnQoa2V5PWNtcF90b19rZXkoY29tcGFyZSkpCiAgICAKICAgIHRvdGFsX2RwcyA9IHN1bShkIGZvciBkLCB0IGluIGVuZW1pZXMpCiAgICB0b3RhbF9kYW1hZ2VfdGFrZW4gPSAwCiAgICAKICAgICMgUHJvY2VzcyBlbmVtaWVzIGluIG9wdGltYWwgb3JkZXIKICAgIGZvciBkLCB0IGluIGVuZW1pZXM6CiAgICAgICAgdG90YWxfZGFtYWdlX3Rha2VuICs9IHRvdGFsX2RwcyAqIHQKICAgICAgICB0b3RhbF9kcHMgLT0gZCAgIyBFbmVteSBpcyBkZWFkLCByZW1vdmUgaXRzIGRhbWFnZSBvdXRwdXQKICAgICAgICAKICAgIHJldHVybiB0b3RhbF9kYW1hZ2VfdGFrZW4=