Optimize Memory Usage

Give a computer with total K memory space, and an array of foreground tasks and background tasks the computer needs to do.

Write an algorithm to find a pair of tasks from each array to maximize memory usage.

Notice the tasks could be done without origin order.

Input

The input consists of five arguments:

foregroundTask: an array representing the memory usage of the foreground tasks

backgroundTask: an array representing the memory usage of the background tasks

K: the total memory space of the computer

Output

Return a list of pairs of the task ids.

Examples

Example 1:

Input:

foregroundTasks = [1, 7, 2, 4, 5, 6]

backgroundTasks = [3, 1, 2]

K = 6

Output: [[3, 2], [4, 1], [5,-1]]
Explanation:

Here we have 5 foreground tasks:

  • Task 0 uses 1 memory.
  • Task 1 uses 7 memory.
  • Task 2 uses 2 memory.

5 background tasks:

  • Task 0 uses 3 memory.
  • Task 1 uses 1 memory.
  • Task 2 uses 2 memory.

We need to find two tasks with total memory usage sum <= K.

Here we can return the foreground task 3 and background task 2, which total use 6 units of memory. Or we can return the foreground task 4 and background task 1. Also, use total 6 units of memory. Or we can return the foreground task 5 only without any background task. Also, use total 6 units of memory.

Example 2:

Input:

foregroundTasks = [1, 7, 2, 4, 5, 6]

backgroundTasks = [1, 1, 2]

K = 10

Output: [[1, 2]]
Explanation:

Here we can return the foreground task 1 and background task 2:

Total memory usage is 7 + 2 = 9, which is smaller than 10.

Given there is no larger better memory usage combination than 9, this is the optimal solution.

Try it yourself