class Solution:
def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
res = 0
nums.sort()
min_num = float('inf')
for i in range(len(nums)):
if nums[i] >= 0:
res += nums[i]
min_num = min(min_num, nums[i])
else:
if k > 0:
res += nums[i] * -1
k -= 1
min_num = min(min_num, -1 * nums[i])
else:
res += nums[i]
if k > 0 and k % 2:
res -= 2 * min_num
return res