C++ code to count ways to form reconnaissance units


Suppose we have an array A with n elements, and another number d. According to the regulations of Dreamland's army, a reconnaissance unit should have exactly two soldiers. Since these two soldiers shouldn't differ much, their heights can differ by at most d centimeters. There are n soldiers whose heights are stored in the array A. Some soldiers are of the same height. We have to find how many ways exist to form a reconnaissance unit from these n soldiers.

So, if the input is like A = [10, 20, 50, 60, 65]; d = 10, then the output will be 6, because (10, 20), (20, 10), (50, 60), (60, 50), (60, 65), (65, 60) are the possible units.

Steps

To solve this, we will follow these steps −

ans := 0
for initialize i := 1, when i < size of A, update (increase i by 1), do:
   for initialize j := 0, when j < i, update (increase j by 1), do:
      if |A[i] - A[j]| <= d, then:
         (increase ans by 1)
      return ans * 2

Example

Let us see the following implementation to get better understanding −

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A, int d){
   int ans = 0;
   for (int i = 1; i < A.size(); i++)
      for (int j = 0; j < i; j++)
         if (abs(A[i] - A[j]) <= d)
            ans++;
   return ans * 2;
}
int main(){
   vector<int> A = { 10, 20, 50, 60, 65 };
   int d = 10;
   cout << solve(A, d) << endl;
}

Input

{ 10, 20, 50, 60, 65 }, 10

Output

6

Updated on: 30-Mar-2022

132 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements