 Open in App
Not now

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

My Personal Notes arrow_drop_up
Related Articles