Given three integers **X**, **Y** and **Z** which represent the number of coins to buy some items. The cost of items is given below:

Item type | Cost |
---|---|

1 | 3 X coins |

2 | 3 Y coins |

3 | 3 Z coins |

4 | 1 X coin + 1 Y coin + 1 Z coin |

The task is to find the maximum number of items that can be bought with the given number of coins.

Input:X = 4, Y = 5, Z = 6

Output:4

Buy 1 item of type 1: X = 1, Y = 5, Z = 6

Buy 1 item of type 2: X = 1, Y = 2, Z = 6

Buy 2 items of type 3: X = 1, Y = 2, Z = 0

Total items bought = 1 + 1 + 2 = 4

Input:X = 6, Y = 7, Z = 9

Output:7

**Approach:** The count of items of **type1**, **type2** and **type3** that can be bought will be **X / 3**, **Y / 3** and **Z / 3** respectively. Now, the number of coins will get reduced after buying these items as **X = X % 3**, **Y = Y % 3** and **Z = Z % 3**. Since, buying the item of type 4 requires a coin from each of the type. So, the total items of type 4 that can be bought will be the minimum of **X**, **Y** and **Z** and the result will be the sum of these items which were bought from each of the type.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach ` `#include <iostream> ` `using` `namespace` `std; ` ` ` `const` `int` `COST = 3; ` ` ` `// Function to find maximum fruits ` `// Can buy from given values of x, y, z. ` `int` `maxItems(` `int` `x, ` `int` `y, ` `int` `z) ` `{ ` ` ` ` ` `// Items of type 1 that can be bought ` ` ` `int` `type1 = x / COST; ` ` ` ` ` `// Update the coins ` ` ` `x %= COST; ` ` ` ` ` `// Items of type 2 that can be bought ` ` ` `int` `type2 = y / COST; ` ` ` ` ` `// Update the coins ` ` ` `y %= COST; ` ` ` ` ` `// Items of type 3 that can be bought ` ` ` `int` `type3 = z / COST; ` ` ` ` ` `// Update the coins ` ` ` `z %= COST; ` ` ` ` ` `// Items of type 4 that can be bought ` ` ` `// To buy a type 4 item, a coin ` ` ` `// of each type is required ` ` ` `int` `type4 = min(x, min(y, z)); ` ` ` ` ` `// Total items that can be bought ` ` ` `int` `maxItems = type1 + type2 + type3 + type4; ` ` ` `return` `maxItems; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `x = 4, y = 5, z = 6; ` ` ` ` ` `cout << maxItems(x, y, z); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java implementation of the approach ` `import` `java.io.*; ` ` ` `class` `GFG ` `{ ` `static` `int` `COST = ` `3` `; ` ` ` `// Function to find maximum fruits ` `// Can buy from given values of x, y, z. ` `static` `int` `maxItems(` `int` `x, ` `int` `y, ` `int` `z) ` `{ ` ` ` ` ` `// Items of type 1 that can be bought ` ` ` `int` `type1 = x / COST; ` ` ` ` ` `// Update the coins ` ` ` `x %= COST; ` ` ` ` ` `// Items of type 2 that can be bought ` ` ` `int` `type2 = y / COST; ` ` ` ` ` `// Update the coins ` ` ` `y %= COST; ` ` ` ` ` `// Items of type 3 that can be bought ` ` ` `int` `type3 = z / COST; ` ` ` ` ` `// Update the coins ` ` ` `z %= COST; ` ` ` ` ` `// Items of type 4 that can be bought ` ` ` `// To buy a type 4 item, a coin ` ` ` `// of each type is required ` ` ` `int` `type4 = Math.min(x, Math.min(y, z)); ` ` ` ` ` `// Total items that can be bought ` ` ` `int` `maxItems = type1 + type2 + type3 + type4; ` ` ` `return` `maxItems; ` `} ` ` ` `// Driver code ` `public` `static` `void` `main (String[] args) ` `{ ` ` ` `int` `x = ` `4` `, y = ` `5` `, z = ` `6` `; ` ` ` `System.out.println(maxItems(x, y, z)); ` `} ` `} ` ` ` `// This code is contributed by @tushil ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 implementation of the approach ` `COST ` `=` `3` `; ` ` ` `# Function to find maximum fruits ` `# Can buy from given values of x, y, z. ` `def` `maxItems(x, y, z) : ` ` ` ` ` `# Items of type 1 that can be bought ` ` ` `type1 ` `=` `x ` `/` `/` `COST; ` ` ` ` ` `# Update the coins ` ` ` `x ` `%` `=` `COST; ` ` ` ` ` `# Items of type 2 that can be bought ` ` ` `type2 ` `=` `y ` `/` `/` `COST; ` ` ` ` ` `# Update the coins ` ` ` `y ` `%` `=` `COST; ` ` ` ` ` `# Items of type 3 that can be bought ` ` ` `type3 ` `=` `z ` `/` `/` `COST; ` ` ` ` ` `# Update the coins ` ` ` `z ` `%` `=` `COST; ` ` ` ` ` `# Items of type 4 that can be bought ` ` ` `# To buy a type 4 item, a coin ` ` ` `# of each type is required ` ` ` `type4 ` `=` `min` `(x, ` `min` `(y, z)); ` ` ` ` ` `# Total items that can be bought ` ` ` `maxItems ` `=` `type1 ` `+` `type2 ` `+` `type3 ` `+` `type4; ` ` ` `return` `maxItems; ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` ` ` `x ` `=` `4` `; y ` `=` `5` `; z ` `=` `6` `; ` ` ` ` ` `print` `(maxItems(x, y, z)); ` ` ` `# This code is contributed by AnkitRai01 ` |

*chevron_right*

*filter_none*

## C#

`// C# implementation of the approach ` `using` `System; ` ` ` `class` `GFG ` `{ ` `static` `int` `COST = 3; ` ` ` `// Function to find maximum fruits ` `// Can buy from given values of x, y, z. ` `static` `int` `maxItems(` `int` `x, ` `int` `y, ` `int` `z) ` `{ ` ` ` ` ` `// Items of type 1 that can be bought ` ` ` `int` `type1 = x / COST; ` ` ` ` ` `// Update the coins ` ` ` `x %= COST; ` ` ` ` ` `// Items of type 2 that can be bought ` ` ` `int` `type2 = y / COST; ` ` ` ` ` `// Update the coins ` ` ` `y %= COST; ` ` ` ` ` `// Items of type 3 that can be bought ` ` ` `int` `type3 = z / COST; ` ` ` ` ` `// Update the coins ` ` ` `z %= COST; ` ` ` ` ` `// Items of type 4 that can be bought ` ` ` `// To buy a type 4 item, a coin ` ` ` `// of each type is required ` ` ` `int` `type4 = Math.Min(x, Math.Min(y, z)); ` ` ` ` ` `// Total items that can be bought ` ` ` `int` `maxItems = type1 + type2 + type3 + type4; ` ` ` `return` `maxItems; ` `} ` ` ` `// Driver code ` `static` `public` `void` `Main () ` `{ ` ` ` `int` `x = 4, y = 5, z = 6; ` ` ` ` ` `Console.Write (maxItems(x, y, z)); ` `} ` `} ` ` ` `// This code is contributed by ajit.. ` |

*chevron_right*

*filter_none*

**Output:**

4

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.