
For the array [3 2 1]
All the subarrays of size at least 2 are:
[3 2], [2 1], [3 2 1]
For the first subarray, the smallest and second smallest elements are 2 and 3, and their sum is 5.
For the second subarray, the smallest and second smallest elements are 1 and 2, and their sum is 3.
For the third subarray, the smallest and second smallest elements are 1 and 2, and their sum is 3.
So the maximum among these sums is 5.
The first line will contain a single integer ‘T’ denoting the number of test cases. Then the test cases follow.
The first line of each test case will contain a single integer ‘N’, denoting the size of the array.
The second line of each test case will contain ‘N’ space-separated integers, denoting the elements of the array.
For each test case, print a single integer denoting the maximum of the sum of the smallest and the second smallest elements of all the subarray possible of size at least 2.
You are not required to print anything; it has already been taken care of. Just implement the function.
1 <= T <= 5
2 <= N <= 10^5
1 <= A[i] <= 10^4
Time Limit: 1 sec.
We will find all the possible subarrays and then calculate the sum of the smallest and the second smallest elements of each subarray. Then we will take the maximum of all of them to find the answer.
Algorithm:
Observe that it is sufficient to consider the subarrays of size 2 only. To prove this let’s consider a subarray of size 3 [x y z] which gives the optimal answer, that means the smallest and the second smallest elements are x and z(because if x and y are the smallest and the second smallest elements then [x y] will also give the optimal answer. Similar is the case with y and z). Now y should be greater than both x and z. That means the subarray [y z] will have a greater sum than [x y z] because in the first one we will consider y and z but in the second one, we will consider x and z and y > x.