Problem · Sorting

Maximum System Memory Capacity

Learn this problem
EasyAmazon logoAmazonINTERNNEW GRADOA
See Amazon hiring insights

Problem statement

Amazon is optimizing the capacity of a cloud system with n servers. The memory capacity of the i-th server is memory[i].

A system uses an even number of servers. If it uses 2x servers, exactly x are primary servers and the other x are backup servers. For every primary server P, it must be paired with a distinct backup server B whose memory capacity is at least that of P.

The system memory capacity is the sum of the memory capacities of all primary servers. You may leave servers unused. Given memory, return the maximum system memory capacity that can be formed.

Complete maximumCapacity, which receives the integer array memory and returns the maximum capacity as a long.

Function

maximumCapacity(memory: int[]) → long

Examples

Example 1

memory = [1, 2, 1, 2]return = 3
Here, we have 4 servers [serverA, serverB, serverC, serverD] having memory sizes as [1, 2, 1, 2]. We can choose serverA and serverB as primary servers, and serverC and serverD as their respective backup. The conditions hold true since memory[serverC] ≥ memory[serverA] and memory[serverD] ≥ memory[serverB]. Hence, the maximum system memory capacity is 3.

Example 2

memory = [1, 2, 1]return = 1
Here, we have 3 servers [serverA, serverB, serverC] having memory sizes as [1, 2, 1]. We can choose serverA as a primary server, and serverB as its respective backup server. The conditions hold true since memory[serverB] ≥ memory[serverA]. Hence, the maximum system memory capacity is 1.

Example 3

memory = [2, 4, 3, 1, 2]return = 5

Given 5 servers as [serverA, serverB, serverC, serverD, serverE] having memory = [2, 4, 3, 1, 2].

Primary Servers Options Backup Servers Options Conditions Valid Option
serverA, serverB serverC, serverD memory[serverA] <= memory[serverC], memory[serverB] <= memory[serverD] No
serverA, serverD serverB, serverE memory[serverA] <= memory[serverB], memory[serverD] <= memory[serverE] Yes
serverA, serverC serverE, serverB memory[serverA] <= memory[serverE], memory[serverC] <= memory[serverB] Yes

In the second configuration, the system memory capacity is memory[serverA] + memory[serverD] = 3. While in the third configuration, it is memory[serverA] + memory[serverC] = 5.

Hence, the maximum system memory capacity is 5.

Constraints

  • 2 ≤ n ≤ 2 * 10^5
  • 1 ≤ size[i] ≤ 10^9

More Amazon problems

drafts saved locally
public long maximumCapacity(int[] memory) {
  // write your code here
}
memory[1, 2, 1, 2]
expected3
checking account