Maximise product of each array element with their indices by rearrangement
Given an Array of N integers, the task is to maximize the value of the product of each array element with their corresponding indices by rearranging the array.
Examples:
Input: N = 4, arr[] = { 3, 5, 6, 1 }
Output: 31
Explanation: If we arrange arr[] as { 1, 3, 5, 6 }. Sum of arr[i]*i is 1*0 + 3*1 + 5*2 + 6*3 = 31, which is maximum
Input: N = 2, arr[] = { 19, 20 }
Output: 20
Maximise product of each array element with their indices by rearrangement using Sorting
The idea is based on the fact that the largest value should be scaled maximum and the smallest value should be scaled minimum. So we multiply the minimum value of i with the minimum value of arr[i]. So, sort the given array in increasing order and compute the sum of arr[i]*i.
Follow the steps mentioned below to implement the idea:
- Sort the array.
- Create a variable sum to store the final answer
- Traverse The array, while traversing the array increases the value of the sum by arr[I]*i.
- Return sum.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int maxSum( int arr[], int n)
{
sort(arr, arr + n);
int sum = 0;
for ( int i = 0; i < n; i++)
sum += (arr[i] * i);
return sum;
}
int main()
{
int arr[] = { 3, 5, 6, 1 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << maxSum(arr, n) << endl;
return 0;
}
|
Java
import java.util.*;
class GFG {
static int maxSum( int arr[], int n)
{
Arrays.sort(arr);
int sum = 0 ;
for ( int i = 0 ; i < n; i++)
sum += (arr[i] * i);
return sum;
}
public static void main(String[] args)
{
int arr[] = { 3 , 5 , 6 , 1 };
int n = arr.length;
System.out.println(maxSum(arr, n));
}
}
|
Python3
def maxSum(arr, n):
arr.sort()
sum = 0
for i in range (n):
sum + = arr[i] * i
return sum
arr = [ 3 , 5 , 6 , 1 ]
n = len (arr)
print (maxSum(arr, n))
|
C#
using System;
class GFG {
static int maxSum( int [] arr, int n)
{
Array.Sort(arr);
int sum = 0;
for ( int i = 0; i < n; i++)
sum += (arr[i] * i);
return sum;
}
static public void Main()
{
int [] arr = { 3, 5, 6, 1 };
int n = arr.Length;
Console.WriteLine(maxSum(arr, n));
}
}
|
PHP
<?php
function maxSum( $arr , $n )
{
sort( $arr );
$sum = 0;
for ( $i = 0; $i < $n ; $i ++)
$sum += ( $arr [ $i ] * $i );
return $sum ;
}
$arr = array ( 3, 5, 6, 1 );
$n = count ( $arr );
echo maxSum( $arr , $n );
?>
|
Javascript
<script>
function maxSum(arr, n)
{
arr.sort();
let sum = 0;
for (let i = 0; i < n; i++)
sum += (arr[i] * i);
return sum;
}
let arr = [ 3, 5, 6, 1 ];
let n = arr.length;
document.write(maxSum(arr, n));
</script>
|
Time Complexity: O(N*log(N))
Auxiliary Space: O(1)
Last Updated :
17 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...