Разбить прямоугольник на почти квадраты заданных областей

У меня есть наборN положительные числа и прямоугольник измеренийX а такжеY что мне нужно разделить наN меньшие прямоугольники, такие что:

площадь поверхности каждого меньшего прямоугольника пропорциональна его соответствующему числу в данном наборевсе пространство большого прямоугольника занято и между меньшими прямоугольниками не осталось местакаждый маленький прямоугольник должен быть как можно ближе к квадратувремя выполнения должно быть достаточно маленьким

Мне нужны указания по этому вопросу. Знаете ли вы о таком алгоритме, описанном в Интернете? Есть ли у вас какие-либо идеи (псевдокод в порядке)?

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос