# Maximum number of parallelograms that can be made using the given length of line segments

Given N line segments where the length of the ith line segment is . The task is to find the maximum number of parallelograms can be made with those line segments if each line segment is used at most in one parallelogram.

**Examples:**

Input:arr[] = {1, 2, 1, 2}Output:1 Only one parallelogram can be made with sides 1, 2, 1, 2Input:arr[] = {1, 3, 5, 7, 1, 3, 5, 7, 1, 3, 5, 7}Output:2

**Approach:** Make a frequency array of the length of line segments. Then the answer will be the total number of parallelograms that can be made using 4 similar sides + parallelograms that can be made using 2 similar sides. As a parallelogram must have equal opposite sides.

## CPP

`// Function to find the maximum number ` `// of parallelograms can be made ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `void` `convert(` `int` `n, ` `int` `a[]) ` `{ ` ` ` ` ` `// Finding the length of the frequency array ` ` ` `int` `z = a[0]; ` ` ` `for` `(` `int` `i = 1; i < n; i++) { ` ` ` `if` `(a[i] > z) ` ` ` `z = a[i]; ` ` ` `} ` ` ` ` ` `z = z + 1; ` ` ` ` ` `int` `ff[z] = { 0 }; ` ` ` `for` `(` `int` `i = 0; i < n; i++) { ` ` ` `// Increasing the occurrence of each segment ` ` ` `ff[a[i]] += 1; ` ` ` `} ` ` ` ` ` `// To store the count of parallelograms ` ` ` `int` `cc = 0; ` ` ` ` ` `for` `(` `int` `i = 0; i < z; i++) { ` ` ` `// Counting parallelograms that can ` ` ` `// be made using 4 similar sides ` ` ` `cc += ` `int` `(ff[i] / 4); ` ` ` `ff[i] = ff[i] % 4; ` ` ` `} ` ` ` ` ` `int` `vv = 0; ` ` ` ` ` `for` `(` `int` `i = 0; i < z; i++) { ` ` ` `// counting segments which have occurrence left >= 2 ` ` ` `if` `(ff[i] >= 2) ` ` ` `vv += 1; ` ` ` `} ` ` ` ` ` `// Adding parallelograms that can be ` ` ` `// made using 2 similar sides ` ` ` `cc += ` `int` `(vv / 2); ` ` ` `cout << (cc); ` `} ` ` ` `// Driver function ` `int` `main() ` `{ ` ` ` `int` `n = 4; ` ` ` `int` `a[] = { 1, 2, 1, 2 }; ` ` ` `convert(n, a); ` `} ` ` ` `// This code is contributed by ` `// Surendra_Gangwar ` |

*chevron_right*

*filter_none*

## Python

`# Function to find the maximum number ` `# of parallelograms can be made ` `def` `convert(n, a): ` ` ` ` ` `# Finding the length of the frequency array ` ` ` `z ` `=` `max` `(a)` `+` `1` ` ` ` ` `ff ` `=` `[` `0` `]` `*` `z ` ` ` `for` `i ` `in` `range` `(n): ` ` ` ` ` `# Increasing the occurrence of each segment ` ` ` `ff[a[i]]` `+` `=` `1` ` ` ` ` `# To store the count of parallelograms ` ` ` `cc ` `=` `0` ` ` ` ` `for` `i ` `in` `range` `(z): ` ` ` `# Counting parallelograms that can ` ` ` `# be made using 4 similar sides ` ` ` `cc` `+` `=` `ff[i]` `/` `/` `4` ` ` `ff[i]` `=` `ff[i]` `%` `4` ` ` ` ` `vv ` `=` `0` ` ` ` ` `for` `i ` `in` `range` `(z): ` ` ` `# counting segments which have occurrence left >= 2 ` ` ` `if` `(ff[i]>` `=` `2` `): ` ` ` `vv` `+` `=` `1` ` ` ` ` `# Adding parallelograms that can be ` ` ` `# made using 2 similar sides ` ` ` `cc` `+` `=` `vv` `/` `/` `2` ` ` `print` `(cc) ` ` ` ` ` `n ` `=` `4` `a ` `=` `[` `1` `, ` `2` `, ` `1` `, ` `2` `] ` `convert(n, a) ` |

*chevron_right*

*filter_none*

**Output:**

1

## Recommended Posts:

- Maximum number that can be display on Seven Segment Display using N segments
- Partition an array such into maximum increasing segments
- Maximum elements that can be made equal with k updates
- Find the number of jumps to reach X in the number line from zero
- Maximum Length Chain of Pairs | DP-20
- Maximum count of sub-strings of length K consisting of same characters
- Length and Breadth of rectangle such that ratio of Area to diagonal^2 is maximum
- Find the minimum of maximum length of a jump required to reach the last island in exactly k jumps
- Find number of magical pairs of string of length L
- Maximum length of subarray such that sum of the subarray is even
- Find element using minimum segments in Seven Segment Display
- Maximum number of candies that can be bought
- Maximum number of teams that can be formed with given persons
- Maximum number of removals of given subsequence from a string
- Maximum number of characters between any two same character in a string

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.