# Print all pairs in an unsorted array with equal sum

Given an unsorted array A[]. The task is to print all **unique pairs** in the unsorted array with equal sum.

**Note**: Print the result in the format as shown in the below examples.

**Examples:**

Input:A[]= { 6, 4, 12, 10, 22, 54, 32, 42, 21, 11}Output:Pairs : ( 4, 12) ( 6, 10) have sum : 16 Pairs : ( 10, 22) ( 21, 11) have sum : 32 Pairs : ( 12, 21) ( 22, 11) have sum : 33 Pairs : ( 22, 21) ( 32, 11) have sum : 43 Pairs : ( 32, 21) ( 42, 11) have sum : 53 Pairs : ( 12, 42) ( 22, 32) have sum : 54 Pairs : ( 10, 54) ( 22, 42) have sum : 64Input:A[]= { 4, 23, 65, 67, 24, 12, 86}Output:Pairs : ( 4, 86) ( 23, 67) have sum : 90

The idea is to use map in C++ STL for avoiding duplicate pair of elements.

- Create a map with key as pair of integer and value as integer to store all unique pair of elements and their corresponding sum.
- Traverse the array and generate all possible pairs and store the pairs and their corresponding sum in first map.
- Create a second map with key as integer and value as a vector of pair to store list of all pair of elements with a corresponding sum.
- Finally, traverse the second map, and for a sum with more than one pair, print all pairs and then the corresponding sum in a format as shown in the above example.

Below is the implementation of the above approach:

## C++

`// C++ program to print all pairs ` `// with equal sum ` ` ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to print all pairs ` `// with equal sum ` `void` `pairWithEqualSum(` `int` `A[], ` `int` `n) ` `{ ` ` ` `// Map1 to store pairs and their sum, ` ` ` `// An ordered map is used here to avoid ` ` ` `// duplicate pairs of elements ` ` ` `map<pair<` `int` `, ` `int` `>, ` `int` `> mp; ` ` ` ` ` `// Insert all unique pairs and their ` ` ` `// corresponding sum in the map ` ` ` `for` `(` `int` `i = 0; i < n - 1; i++) { ` ` ` `for` `(` `int` `j = i + 1; j < n; j++) { ` ` ` `pair<` `int` `, ` `int` `> p = make_pair(A[i], A[j]); ` ` ` ` ` `mp[p] = A[i] + A[j]; ` ` ` `} ` ` ` `} ` ` ` ` ` `// Second map with key as sum and value as ` ` ` `// list of pairs with that sum ` ` ` `map<` `int` `, vector<pair<` `int` `, ` `int` `> > > mp2; ` ` ` ` ` `// Start iterating first map mp and insert all ` ` ` `// pairs with corresponding sum in second map mp2 ` ` ` `for` `(` `auto` `itr = mp.begin(); itr != mp.end(); itr++) { ` ` ` `int` `sum = itr->second; ` ` ` `pair<` `int` `, ` `int` `> pair = itr->first; ` ` ` ` ` `mp2[sum].push_back(pair); ` ` ` `} ` ` ` ` ` `// Traverse the second map mp2, and for sum ` ` ` `// with more than one pair, print all pairs ` ` ` `// and the corresponding sum ` ` ` `for` `(` `auto` `itr = mp2.begin(); itr != mp2.end(); itr++) { ` ` ` `if` `(itr->second.size() > 1) { ` ` ` `cout << ` `"Pairs : "` `; ` ` ` ` ` `for` `(` `int` `i = 0; i < itr->second.size(); i++) { ` ` ` `cout << ` `"( "` `<< itr->second[i].first << ` `", "` ` ` `<< itr->second[i].second << ` `") "` `; ` ` ` `} ` ` ` ` ` `cout << ` `" have sum : "` `<< itr->first << endl; ` ` ` `} ` ` ` `} ` `} ` ` ` `// Driver Code ` `int` `main() ` `{ ` ` ` `int` `A[] = { 6, 4, 12, 10, 22, 54, 32, 42, 21, 11, 8, 2 }; ` ` ` ` ` `int` `n = ` `sizeof` `(A) / ` `sizeof` `(A[0]); ` ` ` ` ` `pairWithEqualSum(A, n); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Python3

# Python3 program to print all pairs

# with equal sum

# Function to print all pairs with equal sum

def pairWithEqualSum(A, n):

# Map1 to store pairs and their sum,

# An ordered map is used here to

# avoid duplicate pairs of elements

mp = {}

# Insert all unique pairs and their

# corresponding sum in the map

for i in range(0, n – 1):

for j in range(i + 1, n):

mp[(A[i], A[j])] = A[i] + A[j]

# Second map with key as sum and value

# as list of pairs with that sum

mp2 = {}

# Start iterating first map mp and insert all

# pairs with corresponding sum in second map mp2

for itr in mp:

Sum = mp[itr]

if Sum not in mp2:

mp2[Sum] = []

mp2[Sum].append(itr)

# Traverse the second map mp2, and for

# sum with more than one pair, print

# all pairs and the corresponding sum

for itr in mp2:

if len(mp2[itr]) > 1:

print(“Pairs : “, end = “”)

for i in range(0, len(mp2[itr])):

print(“(“, mp2[itr][i][0], “,”,

mp2[itr][i][1], “)”, end = ” “)

print(“have sum :”, itr)

# Driver Code

if __name__ == “__main__”:

A = [6, 4, 12, 10, 22, 54,

32, 42, 21, 11, 8, 2]

n = len(A)

pairWithEqualSum(A, n)

# This code is contributed by Rituraj Jain

**Output:**

Pairs : ( 6, 4) ( 8, 2) have sum : 10 Pairs : ( 4, 8) ( 10, 2) have sum : 12 Pairs : ( 4, 10) ( 6, 8) ( 12, 2) have sum : 14 Pairs : ( 4, 12) ( 6, 10) have sum : 16 Pairs : ( 6, 12) ( 10, 8) have sum : 18 Pairs : ( 12, 11) ( 21, 2) have sum : 23 Pairs : ( 10, 22) ( 21, 11) have sum : 32 Pairs : ( 12, 21) ( 22, 11) have sum : 33 Pairs : ( 12, 22) ( 32, 2) have sum : 34 Pairs : ( 22, 21) ( 32, 11) have sum : 43 Pairs : ( 12, 32) ( 42, 2) have sum : 44 Pairs : ( 32, 21) ( 42, 11) have sum : 53 Pairs : ( 12, 42) ( 22, 32) have sum : 54 Pairs : ( 10, 54) ( 22, 42) have sum : 64

## Recommended Posts:

- Find two non-overlapping pairs having equal sum in an Array
- Count of index pairs with equal elements in an array
- Count pairs in an array such that both elements has equal set bits
- Given two unsorted arrays, find all pairs whose sum is x
- Print equal sum sets of array (Partition problem) | Set 1
- Print equal sum sets of array (Partition Problem) | Set 2
- Why is it faster to process sorted array than an unsorted array ?
- Find the maximum cost of an array of pairs choosing at most K pairs
- Given an array of pairs, find all symmetric pairs in it
- Remove duplicates from unsorted array
- k-th missing element in an unsorted array
- Program for Mean and median of an unsorted array
- Count pairs from two linked lists whose sum is equal to a given value
- Count pairs from two sorted arrays whose sum is equal to a given value x
- Count all distinct pairs with difference equal to k

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.