Given **N** items of type-1 and **M** items of type-2. An object can be created from **2 items of type-1** and **1 item of type-2** or **2 items of type-2** and **1 item of type-1** pieces. The task is to find the maximum number of objects that can be created from given number of items of each type.**Examples:**

Input:N = 8, M = 7Output:5Explanation:

3 pairs of 2 type-1 and 1 type-2 objects.

2 pairs of 1 type-1 and 2 type-2 objects.Input:N = 20, M = 3Output:3Explanation:

3 pairs of 2 type-1 and 1 type-2 objects.

**Approach:**

Follow the steps below to solve the problem:

- Create two variables
**initial**and**final**. - initial = Minimum of N, M.
- final = Divide N + M by 3 ( as an object is made up of 3 components).
- Minimum of initial and final is maximum number of objects that can be created from given N type-1 and M type-2 items.

Below is the implementation of the above approach:

## C++

`// C++ program for the above problem` `#include <bits/stdc++.h> ` `using` `namespace` `std;` `// Function for finding` `// the maximum number of` `// objects from N type-1 and ` `// M type-2 items` `int` `numberOfObjects(` `int` `N, ` `int` `M)` `{` ` ` `// storing minimum of N and M` ` ` `int` `initial = min(N, M);` ` ` `// storing maximum number of` ` ` `// objects from given items` ` ` `int` `final = (N + M) / 3;` ` ` `return` `min(initial, final);` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `N = 8;` ` ` `int` `M = 7;` ` ` `cout << numberOfObjects(N, M) ` ` ` `<< endl;` ` ` `return` `0;` `}` |

*chevron_right*

*filter_none*

## Java

`// Java program for the above problem` `class` `GFG{` ` ` `// Function for finding` `// the maximum number of` `// objects from N type-1 and ` `// M type-2 items` `static` `int` `numberOfObjects(` `int` `N, ` `int` `M)` `{` ` ` ` ` `// Storing minimum of N and M` ` ` `int` `initial = Math.min(N, M);` ` ` `// Storing maximum number of` ` ` `// objects from given items` ` ` `int` `last = (N + M) / ` `3` `;` ` ` `return` `Math.min(initial, last);` `}` `// Driver Code` `public` `static` `void` `main(String[] args) ` `{` ` ` `int` `N = ` `8` `;` ` ` `int` `M = ` `7` `;` ` ` ` ` `System.out.println(numberOfObjects(N, M));` `}` `}` `// This code is contributed by rutvik_56` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program for the above problem` `# Function for finding` `# the maximum number of` `# objects from N type-1 and` `# M type-2 items` `def` `numberOfObjects(N, M):` ` ` ` ` `# Storing minimum of N and M` ` ` `initial ` `=` `min` `(N, M)` ` ` `# Storing maximum number of` ` ` `# objects from given items` ` ` `final ` `=` `(N ` `+` `M) ` `/` `/` `3` ` ` `return` `min` `(initial, final)` `# Driver Code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` ` ` `N ` `=` `8` ` ` `M ` `=` `7` ` ` ` ` `print` `(numberOfObjects(N, M))` `# This code is contributed by mohit kumar 29` |

*chevron_right*

*filter_none*

## C#

`// C# program for the above problem` `using` `System;` `class` `GFG{` ` ` `// Function for finding` `// the maximum number of` `// objects from N type-1 and ` `// M type-2 items` `static` `int` `numberOfObjects(` `int` `N, ` `int` `M)` `{` ` ` ` ` `// Storing minimum of N and M` ` ` `int` `initial = Math.Min(N, M);` ` ` ` ` `// Storing maximum number of` ` ` `// objects from given items` ` ` `int` `last = (N + M) / 3;` ` ` ` ` `return` `Math.Min(initial, last);` `}` ` ` `// Driver Code` `public` `static` `void` `Main(` `string` `[] args) ` `{` ` ` `int` `N = 8;` ` ` `int` `M = 7;` ` ` ` ` `Console.Write(numberOfObjects(N, M));` `}` `}` ` ` `// This code is contributed by rock_cool` |

*chevron_right*

*filter_none*

**Output:**

5

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Find the Maximum possible Sum for the given conditions
- Generate an array using given conditions from a given array
- Range sum queries based on given conditions
- Python | Set 2 (Variables, Expressions, Conditions and Functions)
- Maximum Bitwise AND pair (X, Y) from given range such that X and Y can be same
- Classes and Objects in Java
- Passing and Returning Objects in Java
- C++ Classes and Objects
- Program to find gravitational force between two objects
- Time until distance gets equal to X between two objects moving in opposite direction
- Check if X and Y can be made zero by using given operation any number of times
- Number of containers that can be filled in the given time
- Maximum no. of apples that can be kept in a single basket
- Puzzle | Maximum pieces that can be cut from a Circle using 6 straight lines
- Maximum number of tiles required to cover the floor of given size using 2x1 size tiles
- Print elements that can be added to form a given sum
- Check if a right-angled triangle can be formed by the given coordinates
- Check if quantities of 3 distinct colors can be converted to a single color by given merge-pair operations
- Check if characters of a given string can be used to form any N equal strings
- Check if a number can be written as sum of three consecutive integers

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.