class Solution:
def findMaximizedCapital(self, k: int, w: int, profits: List[int], capital: List[int]) -> int:
currentCapital = w
capitalHeap = [(capAmt, idx) for idx, capAmt in enumerate(capital)]
maxProfitHeap = []
heapq.heapify(capitalHeap)
for currProjectIdx in range(k):
while capitalHeap and capitalHeap[0][0] <= currentCapital:
capAmt, idx = heapq.heappop(capitalHeap)
heapq.heappush(maxProfitHeap, (-profits[idx], idx))
if not maxProfitHeap:
break
negMaxProfit, maxProfitIdx = heapq.heappop(maxProfitHeap)
currentCapital += -negMaxProfit
return(currentCapital)