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: 5
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: 3
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++ 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;
} |
// 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 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# 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 |
<script> // JavaScript program for the above problem // Function for finding // the maximum number of // objects from N type-1 and // M type-2 items function numberOfObjects(N, M)
{ // storing minimum of N and M
let initial = Math.min(N, M);
// storing maximum number of
// objects from given items
let final = Math.floor((N + M) / 3);
return Math.min(initial, final);
} // Driver Code let N = 8;
let M = 7;
document.write(numberOfObjects(N, M)
+ "<br>" );
// This code is contributed by Surbhi Tyagi. </script> |
5
Time Complexity: O(1)
Auxiliary Space Complexity: O(1)