- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Minimum 1s to lend power to make whole array powerful using C++

We are given a binary array which can store digits 1’s and 0’s of any given size and an integer variable let’s say, base. The task is to calculate the minimum 1’s that can lend power to other elements of a binary array such that the entire array becomes powerful. An element can lend power to its adjacent element or any other elements within the distance less than base.

Let us see various input output scenarios for this -

**In −** int arr[] = {1, 1, 0, 1, 1, 0, 1}, int base = 7

**Out −**Minimum 1s to lend power to make whole array powerful are: 1

**Explanation −**we are given a binary array of size 7 and a value of base as 7 which means the first encountered digit 1 can lend power to the entire array. Therefore, digit 1 at arr[1] can lend power to all other elements of an array.

**In −**int arr[] = {1, 1, 0, 1, 1, 0, 1}, int base = 3

**Out −**Minimum 1s to lend power to make whole array powerful are: 2

**Explanation −** we are given a binary array of size 7 and a value of base as 2 which means the first encountered digit 1 can lend power to the next two elements of an array. Therefore, digit 1 at arr[2] can lend power to the next two elements of an array and another one at arr[5] can lend power to the next two elements of an array which makes the entire array powerful.

**In −**int arr[] = {1, 1, 0, 1, 1, 0, 1}, int base = 1

**Out −**Impossible to make entire array powerful

**Explanation −**we are given a binary array of size 7 and a value of base as 1 which means the first encountered digit 1 can lend power to the next single element of an array. Therefore, it is
impossible to make the entire array powerful.

## Approach used in the below program is as follows −

Input a binary array of any given size and an integer variable let’s say, base

Calculate the size of an array and declare a variable let's say, val of integer type

Set the val with the call to a function that will return minimum 1’s required to create a powerful array and if it's not possible then it will return a -1 which will further display an error message.

Inside the function Lend_Power(int arr[], int size, int base)

Declare an array of integer type values with the size of a binary array.

Declare a temporary variable as temp and set it to -1 and count and set it to 0.

Start loop FOR from i to 0 till the size of an array. Inside the loop, Check IF arr[i] equals 1 then set temp as i and set arr_2[i] as temp

Start loop FOR from 0 till size of an array and set reset_base as i + base - 1 and reset_size as size - 1. Set a variable set as arr_2[min(reset_base, reset_size)].

Check IF set = -1 OR set + base <= i then return -1

Set variable ‘i’ as set + base.

Return count.

## Example

#include<bits/stdc++.h> using namespace std; int Lend_Power(int arr[], int size, int base) { int arr_2[size]; int temp = -1; int count = 0; for(int i = 0; i < size; i++) { if(arr[i] == 1) { temp = i; } arr_2[i] = temp; } for(int i = 0; i < size;) { int reset_base = i + base - 1; int reset_size = size - 1; int set = arr_2[min(reset_base, reset_size)]; if(set == -1 || set + base <= i) { return -1; } i = set + base; count++; } return count; } int main() { int arr[] = {1, 1, 0, 1, 1, 0, 1}; int base = 2; int size = sizeof(arr) / sizeof(arr[0]); int val = Lend_Power(arr, size, base); if(val == -1) { cout<<"Impossible to make entire array powerful"; } else { cout<<"Minimum 1s to lend power to make whole array powerful are: "<<val; } return 0; }

## Output

If we run the above code it will generate the following Out

Minimum 1s to lend power to make whole array powerful are: 3

- Related Questions & Answers
- Program to find minimum operations to make array equal using Python
- Program to find minimum operations to make the array increasing using Python
- Minimum flips to make all 1s in left and 0s in right in C++
- Minimum Increment to Make Array Unique in C++
- Program to find minimum numbers of function calls to make target array using Python
- Minimum removals to make array sum even in C++
- Minimum removals to make array sum odd in C++
- Program to find minimum moves to make array complementary in Python
- Minimum operations to make XOR of array zero in C++
- Minimum insertions to make a Co-prime array in C++
- Minimum removals from array to make GCD Greater in Python
- Minimum removals from array to make GCD Greater in C++
- Finding minimum steps to make array elements equal in JavaScript
- Minimum number of operations on an array to make all elements 0 using C++.
- Make HTML5 Canvas fill the whole page