import Foundation
func maxProductPair(_ nums: [Int]) -> (Int, Int) {
precondition(nums.count >= 2, "Need at least two numbers")
var max1 = Int.min
var max2 = Int.min
var min1 = Int.max
var min2 = Int.max
for n in nums {
// Track two largest
if n > max1 {
max2 = max1
max1 = n
} else if n > max2 {
max2 = n
}
// Track two smallest
if n < min1 {
min2 = min1
min1 = n
} else if n < min2 {
min2 = n
}
}
return (max1 * max2 >= min1 * min2) ? (max1, max2) : (min1, min2)
}
let nums = [3, 9, 1, 3, 7, 0, 4]
let (a, b) = maxProductPair(nums)
print("Pair: (\(a), \(b)), product = \(a * b)")
/*
run:
Pair: (9, 7), product = 63
*/