Related Articles
Maximum number of objects that can be created as per given conditions
• Difficulty Level : Hard
• Last Updated : 17 Mar, 2021

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 = 7
Output:
Explanation:
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 = 3
Output:
Explanation:
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 ``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;``}`

## 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`

## 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`

## 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`

## Javascript

 ``
Output:
`5`

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

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up