You have an array lengths where each element denotes the length of a ribbon piece, and a number n representing how many equal-length ribbons you want to obtain. You can cut any ribbon into multiple pieces with positive integer lengths, or leave it as is.
For example, a ribbon of length 6 can be left as one piece of 6, or cut into pieces like one piece of 4 and one of 2, three pieces of 2, or six pieces of 1.
Your task is to find the largest possible positive integer length m such that you can cut the ribbons to get at least n pieces of length m. If it's impossible to get n ribbons of the same length, return 0.
Example 1:
Lengths = [10, 8, 6], n = 4
Output: 5
Explanation:
- Cut the first ribbon into two pieces: lengths 5 and 5.
- Cut the second ribbon into one piece of length 5 and one piece of length 3.
- Keep the third ribbon as length 6 (not used).
You get 3 ribbons of length 5 from the first two ribbons, and you can take one more 5-length piece by cutting the third ribbon into 5 and 1.
Total: 4 ribbons of length 5.
Example 2:
Lengths = [8, 5, 10], n = 5
Output: 3
Explanation:
- Cut the first ribbon into two pieces: 3 and 5.
- Cut the second ribbon into one piece of length 3 and one of length 2.
- Cut the third ribbon into three pieces: 3, 3 and 4.
You get enough ribbons of length 3 to make 5 pieces.
Example 3:
Lengths = [4, 3, 3], n = 10
Output: 0
Explanation:
It is not possible to get 10 ribbons of the same positive length from the given ribbons.