Computer Science, asked by Sanskarlohani9128, 8 months ago

In a given list of n binary elements,check whether each pair of 1s should be separated by atleast x position or not

Answers

Answered by Anonymous
0

Answer:

Input: arr[] = {0, -1, 2, -3, 1}

sum = -2

Output: -3, 1

If we calculate the sum of the output,

1 + (-3) = -2

Input: arr[] = {1, -2, 1, 0, 5}

sum = 0

Output: -1

No valid pair exists.

Explanation:

// C++ program to check if given array

// has 2 elements whose sum is equal

// to the given value

#include <bits/stdc++.h>

using namespace std;

// Function to check if array has 2 elements

// whose sum is equal to the given value

bool hasArrayTwoCandidates(int A[], int arr_size,

int sum)

{

int l, r;

/* Sort the elements */

sort(A, A + arr_size);

/* Now look for the two candidates in

the sorted array*/

l = 0;

r = arr_size - 1;

while (l < r) {

if (A[l] + A[r] == sum)

return 1;

else if (A[l] + A[r] < sum)

l++;

else // A[i] + A[j] > sum

r--;

}

return 0;

}

/* Driver program to test above function */

int main()

{

int A[] = { 1, 4, 45, 6, 10, -8 };

int n = 16;

int arr_size = sizeof(A) / sizeof(A[0]);

// Function calling

if (hasArrayTwoCandidates(A, arr_size, n))

cout << "Array has two elements"

" with given sum";

else

cout << "Array doesn't have two"

" elements with given sum";

return 0;

Similar questions