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 Codeint main(){    int N = 8;    int M = 7;    cout << numberOfObjects(N, M)         << endl;    return 0;}

## Java

 // Java program for the above problemclass GFG{     // Function for finding// the maximum number of// objects from N type-1 and// M type-2 itemsstatic 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 Codepublic 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 itemsdef 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 Codeif __name__ == '__main__':         N = 8    M = 7         print(numberOfObjects(N, M)) # This code is contributed by mohit kumar 29

## C#

 // C# program for the above problemusing System;class GFG{      // Function for finding// the maximum number of// objects from N type-1 and// M type-2 itemsstatic 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 Codepublic 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