Sum of minimum element of all sub-sequences of a sorted array
Last Updated :
22 Jun, 2022
Given a sorted array A of n integers. The task is to find the sum of the minimum of all possible subsequences of A.
Note: Considering there will be no overflow of numbers.
Examples:
Input: A = [1, 2, 4, 5]
Output: 29
Subsequences are [1], [2], [4], [5], [1, 2], [1, 4], [1, 5], [2, 4], [2, 5], [4, 5] [1, 2, 4], [1, 2, 5], [1, 4, 5], [2, 4, 5], [1, 2, 4, 5]
Minimums are 1, 2, 4, 5, 1, 1, 1, 2, 2, 4, 1, 1, 1, 2, 1.
Sum is 29
Input: A = [1, 2, 3]
Output: 11
Approach: The Naive approach is to generate all possible subsequences, find their minimum and add them to the result.
Efficient Approach: It is given that the array is sorted, so observe that the minimum element occurs 2n-1 times, the second minimum occurs 2n-2 times, and so on... Let's take an example:
arr[] = {1, 2, 3}
Subsequences are {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}
Minimum of each subsequence: {1}, {2}, {3}, {1}, {1}, {2}, {1}.
where
1 occurs 4 times i.e. 2 n-1 where n = 3.
2 occurs 2 times i.e. 2n-2 where n = 3.
3 occurs 1 times i.e. 2n-3 where n = 3.
So, traverse the array and add current element i.e. arr[i]* pow(2, n-1-i) to the sum.
Below is the implementation of the above approach:
C++
// C++ implementation of the above approach
#include <bits/stdc++.h>
using namespace std;
// Function to find the sum
// of minimum of all subsequence
int findMinSum(int arr[], int n)
{
int occ = n - 1, sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i] * pow(2, occ);
occ--;
}
return sum;
}
// Driver code
int main()
{
int arr[] = { 1, 2, 4, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << findMinSum(arr, n);
return 0;
}
Java
// Java implementation of the above approach
class GfG
{
// Function to find the sum
// of minimum of all subsequence
static int findMinSum(int arr[], int n)
{
int occ = n - 1, sum = 0;
for (int i = 0; i < n; i++)
{
sum += arr[i] * (int)Math.pow(2, occ);
occ--;
}
return sum;
}
// Driver code
public static void main(String[] args)
{
int arr[] = { 1, 2, 4, 5 };
int n = arr.length;
System.out.println(findMinSum(arr, n));
}
}
// This code is contributed by Prerna Saini
Python3
# Python3 implementation of the
# above approach
# Function to find the sum
# of minimum of all subsequence
def findMinSum(arr, n):
occ = n - 1
Sum = 0
for i in range(n):
Sum += arr[i] * pow(2, occ)
occ -= 1
return Sum
# Driver code
arr = [1, 2, 4, 5]
n = len(arr)
print(findMinSum(arr, n))
# This code is contributed
# by mohit kumar
C#
// C# implementation of the above approach
using System;
class GFG
{
// Function to find the sum
// of minimum of all subsequence
static int findMinSum(int []arr, int n)
{
int occ = n - 1, sum = 0;
for (int i = 0; i < n; i++)
{
sum += arr[i] *(int) Math.Pow(2, occ);
occ--;
}
return sum;
}
// Driver code
public static void Main(String []args)
{
int []arr = { 1, 2, 4, 5 };
int n = arr.Length;
Console.WriteLine( findMinSum(arr, n));
}
}
// This code is contributed by Arnab Kundu
PHP
<?php
// PHP implementation of the
// above approach
// Function to find the sum
// of minimum of all subsequence
function findMinSum($arr, $n)
{
$occ1 = ($n);
$occ = $occ1 - 1;
$Sum = 0;
for ($i = 0; $i < $n; $i++)
{
$Sum += $arr[$i] * pow(2, $occ);
$occ -= 1;
}
return $Sum;
}
// Driver code
$arr = array(1, 2, 4, 5);
$n = count($arr);
echo findMinSum($arr, $n);
// This code is contributed
// by Srathore
?>
JavaScript
<script>
// Javascript implementation of the above approach
// Function to find the sum
// of minimum of all subsequence
function findMinSum(arr, n)
{
var occ = n - 1, sum = 0;
for (var i = 0; i < n; i++) {
sum += arr[i] * Math.pow(2, occ);
occ--;
}
return sum;
}
// Driver code
var arr = [ 1, 2, 4, 5 ];
var n = arr.length;
document.write( findMinSum(arr, n));
</script>
Time Complexity: O(nlogn)
Auxiliary Space: O(1)
Note: To find the Sum of maximum element of all subsequences in a sorted array, just traverse the array in reverse order and apply the same formula for Sum.
Similar Reads
Sum of minimum element of all subarrays of a sorted array Given a sorted array A of n integers. The task is to find the sum of the minimum of all possible subarrays of A. Examples: Input: A = [ 1, 2, 4, 5] Output: 23 Subsequences are [1], [2], [4], [5], [1, 2], [2, 4], [4, 5] [1, 2, 4], [2, 4, 5], [1, 2, 4, 5] Minimums are 1, 2, 4, 5, 1, 2, 4, 1, 2, 1. Sum
4 min read
Minimum sum of medians of all possible K length subsequences of a sorted array Given a sorted array arr[] consisting of N integers and a positive integer K(such that N%K is 0), the task is to find the minimum sum of the medians of all possible subsequences of size K such that each element belongs to only one subsequence. Examples: Input: arr[] = {1, 2, 3, 4, 5, 6}, K = 2Output
7 min read
Sum of minimum elements of all subarrays Given an array A of n integers. The task is to find the sum of minimum of all possible (contiguous) subarray of A.Examples: Input: A = [3, 1, 2, 4] Output: 17 Explanation: Subarrays are [3], [1], [2], [4], [3, 1], [1, 2], [2, 4], [3, 1, 2], [1, 2, 4], [3, 1, 2, 4]. Minimums are 3, 1, 2, 4, 1, 1, 2,
15+ min read
Minimum number of deletions to make a sorted sequence Given an array of n integers. The task is to remove or delete the minimum number of elements from the array so that when the remaining elements are placed in the same sequence order to form an increasing sorted sequence. Examples : Input : {5, 6, 1, 7, 4}Output : 2Removing 1 and 4leaves the remainin
15+ min read
Minimize the sum of MEX by removing all elements of array Given an array of integers arr[] of size N. You can perform the following operation N times: Pick any index i, and remove arr[i] from the array and add MEX(arr[]) i.e., Minimum Excluded of the array arr[] to your total score. Your task is to minimize the total score. Examples: Input: N = 8, arr[] =
7 min read