Given two integer arrays nums1 and nums2 of equal length n, and integer k, pick k indices where the score = sum(nums1[selected]) * min(nums2[selected]) is maximized.
Sort pairs by nums2 descending. Iterate and maintain a min-heap of size k for nums1 values. At each step the minimum of nums2 is current nums2[i]; multiply by sum of top-k nums1 values.
- Create pairs (nums1[i], nums2[i]), sort by nums2 descending.
- Min-heap of size k for nums1 values, maintain running sum.
- For each pair: add nums1 to heap and sum; if heap.size() > k, remove min from sum and heap.
- When heap.size() == k: update answer with sum * nums2[i].
- Time Complexity: O(N log N + N log k)
- Space Complexity: O(N + k)