# 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`

##### 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`

##### 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.