'''
你正在玩一款电子游戏,在游戏中你需要保护城市免受怪物侵袭。
给你一个下标从0开始且长度为n的整数数组dist,
其中dist[i]是第i个怪物与城市的初始距离(单位:米)。
怪物以恒定的速度走向城市。
给你一个长度为n的整数数组speed表示每个怪物的速度,
其中speed[i]是第i个怪物的速度(单位:米/分)。
怪物从第0分钟时开始移动。
你有一把武器,并可以选择在每一分钟的开始时使用,包括第0分钟。
但是你无法在一分钟的中间使用武器。这种武器威力惊人,一次可以消灭任一还活着的怪物。
一旦任一怪物到达城市,你就输掉了这场游戏。
如果某个怪物恰在某一分钟开始时到达城市,这会被视为输掉游戏,在你可以使用武器之前,游戏就会结束。
返回在你输掉游戏前可以消灭的怪物的最大数量。
如果你可以在所有怪物到达城市前将它们全部消灭,返回n。
'''
from typing import List
class Solution:
def eliminateMaximum(self, dist: List[int], speed: List[int]) -> int:
n = len(dist)
# 计算怪物到达时间 排序
arrive_time = [dist[i] // speed[i] if dist[i] % speed[i] == 0 else dist[i] // speed[i] + 1 for i in
range(len(dist))]
arrive_time.sort()
# i + 1代表实际时间 arrive_time为理论到达时间
# 如果理论时间<实际时间 说明怪兽成功入侵
for i in range(n):
if arrive_time[i] < i + 1:
return i
return n