# Maximum items that can be bought with the given type of coins

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 = 6Output: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 = 4Input:X = 6, Y = 7, Z = 9Output: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;` `}` |

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

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

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

## Javascript

`<script>` `// Javascript implementation of the approach` `const COST = 3;` `// Function to find maximum fruits` `// Can buy from given values of x, y, z.` `function` `maxItems(x, y, z)` `{` ` ` `// Items of type 1 that can be bought` ` ` `let type1 = parseInt(x / COST);` ` ` `// Update the coins` ` ` `x %= COST;` ` ` `// Items of type 2 that can be bought` ` ` `let type2 = parseInt(y / COST);` ` ` `// Update the coins` ` ` `y %= COST;` ` ` `// Items of type 3 that can be bought` ` ` `let type3 = parseInt(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` ` ` `let type4 = Math.min(x, Math.min(y, z));` ` ` `// Total items that can be bought` ` ` `let maxItems = type1 + type2 + type3 + type4;` ` ` `return` `maxItems;` `}` `// Driver code` ` ` `let x = 4, y = 5, z = 6;` ` ` `document.write(maxItems(x, y, z));` `</script>` |

**Output:**

4

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