Make max elements in B[] equal to that of A[] by adding/subtracting integers in range [0, K]
Last Updated :
13 Sep, 2021
Given two arrays A[] and B[] and an integer K, the task is to maximize the count of integers of array B[] that can be made equal with array A[] by adding or subtracting any integer in the range [0, K].
Examples:
Input: K=5, A[] = [100, 65, 35, 85, 55], B[] = [30, 60, 75, 95]
Output: 3
Explanation:
30 + 5, 60 + 5, 95 + 5 gives the values which are equal with few elements of array A[].
Input: K = 5, A[] = [10, 20, 30, 40, 50], B[] = [1, 20, 3]
Output: 1
Explanation:
Only the 2nd value can be made equal, Since its value [20] can be changed to [20] by adding/subtracting 0 from it.
Approach: The idea is to check whether the absolute difference between elements of the array B[] with any element of the array A[] is less than or equals to K. If yes then include this in the count. Print the count all such elements after checking the above condition for all the elements in the array B[].
Below is the implementation of the above approach:
C++
// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
// Function that count the number of
// integers from array B[] such that
// subtracting element in the range
// [0, K] given any element in A[]
void countElement(int A[], int N,
int B[], int M, int K)
{
// To store the count of element
int cnt = 0;
// Traverse the array B[]
for (int i = 0; i < M; i++) {
int currentElement = B[i];
// Traverse the array A[]
for (int j = 0; j < N; j++) {
// Find the difference
int diff
= abs(currentElement - A[j]);
// If difference is atmost
// K then increment the cnt
if (diff <= K) {
cnt++;
break;
}
}
}
// Print the count
cout << cnt;
}
// Driver Code
int main()
{
// Given array A[] and B[]
int A[] = { 100, 65, 35, 85, 55 };
int B[] = { 30, 60, 75, 95 };
// Given K
int K = 5;
int N = sizeof(A) / sizeof(A[0]);
int M = sizeof(B) / sizeof(B[0]);
// Function Call
countElement(A, N, B, M, K);
return 0;
}
Java
// Java program for the above approach
class GFG{
// Function that count the number of
// integers from array B[] such that
// subtracting element in the range
// [0, K] given any element in A[]
static void countElement(int A[], int N,
int B[], int M, int K)
{
// To store the count of element
int cnt = 0;
// Traverse the array B[]
for(int i = 0; i < M; i++)
{
int currentElement = B[i];
// Traverse the array A[]
for(int j = 0; j < N; j++)
{
// Find the difference
int diff = Math.abs(
currentElement - A[j]);
// If difference is atmost
// K then increment the cnt
if (diff <= K)
{
cnt++;
break;
}
}
}
// Print the count
System.out.print(cnt);
}
// Driver Code
public static void main(String[] args)
{
// Given array A[] and B[]
int A[] = { 100, 65, 35, 85, 55 };
int B[] = { 30, 60, 75, 95 };
// Given K
int K = 5;
int N = A.length;
int M = B.length;
// Function call
countElement(A, N, B, M, K);
}
}
// This code is contributed by Rajput-Ji
Python3
# Python3 program to implement
# the above approach
# Function that count the number of
# integers from array B such that
# subtracting element in the range
# [0, K] given any element in A
def countElement(A, N, B, M, K):
# To store the count of element
cnt = 0
# Traverse the array B
for i in range(M):
currentElement = B[i]
# Traverse the array A
for j in range(N):
# Find the difference
diff = abs(currentElement - A[j])
# If difference is atmost
# K then increment the cnt
if(diff <= K):
cnt += 1
break
# Print the count
print(cnt)
# Driver Code
if __name__ == '__main__':
# Given array A and B
A = [ 100, 65, 35, 85, 55 ]
B = [ 30, 60, 75, 95 ]
N = len(A)
M = len(B)
# Given K
K = 5
# Function call
countElement(A, N, B, M, K)
# This code is contributed by Shivam Singh
C#
// C# program for the above approach
using System;
class GFG{
// Function that count the number of
// integers from array []B such that
// subtracting element in the range
// [0, K] given any element in []A
static void countElement(int []A, int N,
int []B, int M, int K)
{
// To store the count of element
int cnt = 0;
// Traverse the array []B
for(int i = 0; i < M; i++)
{
int currentElement = B[i];
// Traverse the array []A
for(int j = 0; j < N; j++)
{
// Find the difference
int diff = Math.Abs(
currentElement - A[j]);
// If difference is atmost
// K then increment the cnt
if (diff <= K)
{
cnt++;
break;
}
}
}
// Print the count
Console.Write(cnt);
}
// Driver Code
public static void Main(String[] args)
{
// Given array []A and []B
int []A = { 100, 65, 35, 85, 55 };
int []B = { 30, 60, 75, 95 };
// Given K
int K = 5;
int N = A.Length;
int M = B.Length;
// Function call
countElement(A, N, B, M, K);
}
}
// This code is contributed by Rohit_ranjan
JavaScript
<script>
// Javascript Script program to implement
// the above approach
// Function that count the number of
// integers from array B[] such that
// subtracting element in the range
// [0, K] given any element in A[]
function countElement(A, N, B, M, K)
{
// To store the count of element
let cnt = 0;
// Traverse the array B[]
for(let i = 0; i < M; i++)
{
let currentElement = B[i];
// Traverse the array A[]
for(let j = 0; j < N; j++)
{
// Find the difference
let diff = Math.abs(
currentElement - A[j]);
// If difference is atmost
// K then increment the cnt
if (diff <= K)
{
cnt++;
break;
}
}
}
// Print the count
document.write(cnt);
}
// Driver Code
// Given array A[] and B[]
let A = [ 100, 65, 35, 85, 55 ];
let B = [ 30, 60, 75, 95 ];
// Given K
let K = 5;
let N = A.length;
let M = B.length;
// Function call
countElement(A, N, B, M, K);
</script>
Time Complexity: O(N*M), where N and M are the lengths of the arrays A[] and B[].
Auxiliary Space: O(1)
Similar Reads
Count of operations to make all elements of array a[] equal to its min element by performing a[i] â b[i] Given two array a[] and b[] of size N, the task is to print the count of operations required to make all the elements of array a[i] equal to its minimum element by performing a[i] - b[i] where its always a[i] >= b[i]. If it is not possible then return -1.Example: Input: a[] = {5, 7, 10, 5, 15} b[
9 min read
Minimum operations to make Array equal by repeatedly adding K from an element and subtracting K from other Given an array arr[] and an integer K, the task is to find the minimum number of operations to make all the elements of the array arr[] equal. In one operation, K is subtracted from an element and this K is added into other element. If it is not possible then print -1. Examples: Input: arr[] = {5, 8
7 min read
Maximum number of elements from an array B[] that are present in ranges [A[i] + K, A[i] - K] Given two arrays A[] of size N and B[] of size M and an integer K, the task is to select at most one element from array B[] for every element A[i] such that the element lies in the range [A[i] - K, A[i] + K] ( for 0 <= i <= N - 1 ). Print the maximum number of elements that can be selected fro
7 min read
Find Z for adding K elements of A to match K elements of B Given two arrays A and B of the same length and an integer K (K ⥠1). Then the task is to return all possible values of Z (Z > 0), such that adding it in any K number of elements of A gives K elements of B. If no value of Z is possible print Not Possible. Examples: Input: A[] = { 3, 1, 5, 7 }, B[
8 min read
Make all the elements of equal by using given operation Given an array A[] of length N, the task is to return the minimum number of times the below-given operations are required to perform so that all elements become equal. If it is not possible then return -1. Choose two distinct indices i and j. Such that A[i] > A[j]Let X = Ceil((A[i] - A[j])/2)Subt
8 min read