# Find a pair with sum N having minimum absolute difference

• Last Updated : 19 Mar, 2021

Given an integer N, the task is to find a distinct pair of X and Y such that X + Y = N and abs(X – Y) is minimum.

Examples:

Attention reader! All those who say programming isn't for kids, just haven't met the right mentors yet. Join the  Demo Class for First Step to Coding Coursespecifically designed for students of class 8 to 12.

The students will get to learn more about the world of programming in these free classes which will definitely help them in making a wise career choice in the future.

Input: N = 11
Output: 5 6
Explanation:
X = 5 and Y = 6 satisfy the given equation.
Therefore, the minimum absolute value of abs(X – Y) = 1.

Input: N = 12
Output: 5 7

Naive Approach: The simplest approach to solve this problem is to generate all possible values of X and Y with a sum equal to N and print the value of X and Y which gives the minimum absolute value of abs(X – Y).

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

Efficient Approach: The above approach can be optimized based on the following observations:

If N % 2 == 1, then pairs (N / 2) and (N / 2 + 1) have minimum absolute difference.
Otherwise, pairs (N / 2 – 1) and (N / 2 + 1) will have the minimum absolute difference.

Follow the steps below to solve the problem:

• Check if N is odd or not. If found to be true, then print the floor value of (N / 2) and (N / 2 + 1) as the required answer.
• Otherwise, print the value of (N / 2 – 1) and (N / 2 + 1).

Below is the implementation of the above approach:

## C++

 `// C++ program to implement``// the above approach``#include ``using` `namespace` `std;` `// Function to find the value of X and Y``// having minimum value of abs(X - Y)``void` `findXandYwithminABSX_Y(``int` `N)``{``    ``// If N is an odd number``    ``if` `(N % 2 == 1) {``        ``cout << (N / 2) << ``" "` `<< (N / 2 + 1);``    ``}` `    ``// If N is an even number``    ``else` `{``        ``cout << (N / 2 - 1) << ``" "` `<< (N / 2 + 1);``    ``}``}` `// Driver Code``int` `main()``{``    ``int` `N = 12;``    ``findXandYwithminABSX_Y(N);``}`

## Java

 `// Java program to implement``// the above approach``import` `java.util.*;``class` `GFG {` `    ``// Function to find the value``    ``// of X and Y having minimum``    ``// value of Math.abs(X - Y)``    ``static` `void` `findXandYwithminABSX_Y(``int` `N)``    ``{``        ``// If N is an odd number``        ``if` `(N % ``2` `== ``1``) {``            ``System.out.print((N / ``2``) + ``" "` `+ (N / ``2` `+ ``1``));``        ``}` `        ``// If N is an even number``        ``else` `{``            ``System.out.print((N / ``2` `- ``1``) + ``" "``                             ``+ (N / ``2` `+ ``1``));``        ``}``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `N = ``12``;``        ``findXandYwithminABSX_Y(N);``    ``}``}` `// This code is contributed by gauravrajput1`

## Python3

 `# Python3 program to implement``# the above approach` `# Function to find the value of X and Y``# having minimum value of abs(X - Y)`  `def` `findXandYwithminABSX_Y(N):` `    ``# If N is an odd number``    ``if` `(N ``%` `2` `=``=` `1``):``        ``print``((N ``/``/` `2``), (N ``/``/` `2` `+` `1``))` `    ``# If N is an even number``    ``else``:``        ``print``((N ``/``/` `2` `-` `1``), (N ``/``/` `2` `+` `1``))`  `# Driver Code``if` `__name__ ``=``=` `'__main__'``:` `    ``N ``=` `12` `    ``findXandYwithminABSX_Y(N)` `# This code is contributed by mohit kumar 29`

## C#

 `// C# program to implement``// the above approach``using` `System;``class` `GFG {` `    ``// Function to find the value``    ``// of X and Y having minimum``    ``// value of Math.abs(X - Y)``    ``static` `void` `findXandYwithminABSX_Y(``int` `N)``    ``{``        ``// If N is an odd number``        ``if` `(N % 2 == 1) {``            ``Console.Write((N / 2) + ``" "` `+ (N / 2 + 1));``        ``}` `        ``// If N is an even number``        ``else` `{``            ``Console.Write((N / 2 - 1) + ``" "` `+ (N / 2 + 1));``        ``}``    ``}` `    ``// Driver Code``    ``public` `static` `void` `Main()``    ``{``        ``int` `N = 12;``        ``findXandYwithminABSX_Y(N);``    ``}``}` `// This code is contributed by bgangwar59`

## PHP

 ``

## Javascript

 ``
Output:
`5 7`

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

My Personal Notes arrow_drop_up