Check if A and B can be reduced to 0 by decrementing with x and y with absolute difference at most K

Check if A and B can be reduced to 0 by decrementing with x and y with absolute difference at most K

Given three integers A, B, and K. The task is to check whether A and B can be reduced to zero by decrementing x and y from A and B respectively such that abs(x – y) ≤ K.

Example:

Input: A = 2, B = 7, K = 3
Output: YES
Explanation: Decrement values in the following way:

  • Decrement 1 from A and 4 from B such that abs(1 – 4) ≤ 3, therefore, current value of A = 1 and B = 3.
  • Decrement 1 from A and 3 from B such that abs(1 – 3) ≤ 3, current value of A = 0 and B = 0.

So, it is possible to reduce both the numbers to 0.
 

Input: A = 9, B = 8, K = 0
Output: NO

 

Approach: The task can be solved with a simple observation. The idea is to find the minimum and maximum out of A and B. If the minimum number multiplied by (1+K) is less than the maximum, then it is not possible to convert A and B to zero, else they can be converted to zero.

Below is the implementation of the above approach:

C++

#include <bits/stdc++.h>

using namespace std;

 

bool isPossibleToReduce(int A, int B, int k)

{

    

    

    int mn = min(A, B);

    int mx = max(A, B);

 

    

    

    

    if (mn * (1 + k) < mx) {

        return false;

    }

 

    

    return true;

}

 

int main()

{

    int A = 2, B = 7;

    int K = 3;

 

    if (isPossibleToReduce(A, B, K))

        cout << "YES";

    else

        cout << "NO";

 

    return 0;

}

Java

import java.io.*;

import java.util.*;

class GFG {

 

    

    

    static boolean isPossibleToReduce(int A, int B, int k)

    {

       

        

        

        int mn = Math.min(A, B);

        int mx = Math.max(A, B);

 

        

        

        

        if (mn * (1 + k) < mx) {

            return false;

        }

 

        

        return true;

    }

 

    

    public static void main(String[] args)

    {

        int A = 2, B = 7;

        int K = 3;

 

        if (isPossibleToReduce(A, B, K))

            System.out.println("YES");

        else

            System.out.println("NO");

    }

}

 

Python3

 

def isPossibleToReduce(A, B, k):

 

    

    

    mn = min(A, B)

    mx = max(A, B)

 

    

    

    

    if (mn * (1 + k) < mx):

        return False

 

    

    return True

 

if __name__ == "__main__":

 

    A = 2

    B = 7

    K = 3

 

    if (isPossibleToReduce(A, B, K)):

        print("YES")

 

    else:

        print("NO")

 

    

C#

using System;

 

public class GFG {

 

    /// Function to check if it is possible

    

    static bool isPossibleToReduce(int A, int B, int k)

    {

       

        

        

        int mn = Math.Min(A, B);

        int mx = Math.Max(A, B);

 

        

        

        

        if (mn * (1 + k) < mx) {

            return false;

        }

 

        

        return true;

    }

 

    

    public static void Main(string[] args)

    {

        int A = 2, B = 7;

        int K = 3;

 

        if (isPossibleToReduce(A, B, K))

            Console.WriteLine("YES");

        else

            Console.WriteLine("NO");

    }

}

 

Javascript

<script>

 

function isPossibleToReduce(A, B, k)

{

 

  

  

  let mn = Math.min(A, B);

  let mx = Math.max(A, B);

 

  

  

  

  if (mn * (1 + k) < mx) {

    return false;

  }

 

  

  return true;

}

 

 

let A = 2,

  B = 7;

let K = 3;

 

if (isPossibleToReduce(A, B, K)) document.write("YES");

else document.write("NO");

 

</script>

 
 

 

Time Complexity: O(1)
Auxiliary Space: O(1)

 



You may also be interested in