
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
Rearrange an array to minimize sum of product of consecutive pair elements in C++
We are given a positive integer type array, let's say, arr[] of any given size. The task is to rearrange an array in such a manner that when we multiply an element with its alternative element and then add all the resultant elements then it should return the minimum sum.
Let us see various input output scenarios for this −
Input − int arr[] = {2, 5, 1, 7, 5, 0, 1, 0}
Output − Rearrangement of an array to minimize sum i.e. 7 of product of consecutive pair elements is: 7 0 5 0 5 1 2 1
Explanation − we are given an integer array of size 8. Now, we will rearrange the array i.e. 7 0 5 0 5 1 2 1. We will check whether its returning minimum sum i.e. 7 * 0 + 5 * 0 + 5 * 1 + 2 * 1 = 0 + 0 + 5 + 2 = 7.
Input − int arr[] = {1, 3, 7, 2, 4, 3}
Output − Rearrangement of an array to minimize sum i.e. 24 of product of consecutive pair elements is: 7 1 4 2 3 3
Explanation − we are given an integer array of size 6. Now, we will rearrange the array i.e. 7 1 4 2 3 3. We will check whether its returning minimum sum i.e. 7 * 1 + 4 * 2 + 3 * 3 = 7 + 8 + 9 = 24.
Approach used in the below program is as follows
Input an array of integer type elements and calculate the size of an array.
Sort an array using the sort method of C++ STL by passing array and size of an array to the sort function.
Declare an integer variable and set it with the call to the function Rearrange_min_sum(arr, size)
Inside the function Rearrange_min_sum(arr, size)
Create a variable, let's say, ‘even’ and ‘odd’ type of type vector which stores integer variables.
Declare a variable as temp and total and initialise it with 0.
Start loop FOR from i to 0 till i less than size. Inside the loop, check IF i is less than size/2 then push arr[i] to odd vector ELSE, push arr[i] to even vector
Call the sort method by passing even.begin(), even.end() and greater<int>().
Start loop FOR from i to 0 till i less than even.size(). Inside the loop, set arr[temp++] to even[j], arr[temp++] to odd[j] and total to total + even[j] * odd[j]
Return total
Print the result.
Example
#include <bits/stdc++.h> using namespace std; int Rearrange_min_sum(int arr[], int size){ vector<int> even, odd; int temp = 0; int total = 0; for(int i = 0; i < size; i++){ if (i < size/2){ odd.push_back(arr[i]); } else{ even.push_back(arr[i]); } } sort(even.begin(), even.end(), greater<int>()); for(int j = 0; j < even.size(); j++){ arr[temp++] = even[j]; arr[temp++] = odd[j]; total += even[j] * odd[j]; } return total; } int main(){ int arr[] = { 2, 5, 1, 7, 5, 0, 1, 0}; int size = sizeof(arr)/sizeof(arr[0]); //sort an array sort(arr, arr + size); //call function int total = Rearrange_min_sum(arr, size); cout<<"Rearrangement of an array to minimize sum i.e. "<<total<<" of product of consecutive pair elements is: "; for(int i = 0; i < size; i++){ cout << arr[i] << " "; } return 0; }
Output
If we run the above code it will generate the following Output
Rearrangement of an array to minimize sum i.e. 7 of product of consecutive pair elements is: 7 0 5 0 5 1 2 1
- Related Articles
- Maximum sum of n consecutive elements of array in JavaScript
- Pair of (adjacent) elements of an array whose sum is lowest JavaScript
- Consecutive elements sum array in JavaScript
- Product of all pairwise consecutive elements in an Arrays in C++
- Program to check we can rearrange array to make difference between each pair of elements same in Python
- Given an array of integers, find the pair of adjacent elements that has the largest product and return that product JavaScript
- Construct an array from GCDs of consecutive elements in given array in C++
- XOR of Sum of every possible pair of an array in C++
- Return the sum of two consecutive elements from the original array in JavaScript
- Absolute Difference of all pairwise consecutive elements in an array (C++)?
- Sum of distinct elements of an array in JavaScript
- Compute cartesian product of elements in an array in JavaScript
- Sum of distinct elements of an array - JavaScript
- Difference between sum and product of an array in JavaScript
- Find elements of array using XOR of consecutive elements in C++
