Алгоритм позиционирования объекта

мне интересно, если есть "оптимальный» Решение этой проблемы:

У меня есть пространство размером n x m (в пикселях) с ранее существовавшим прямоугольником p - объекты разных размеров. Теперь я хочу разместить q (одинакового размера) новые объекты в этом пространстве без какого-либо перекрытия.

Алгоритм, который я придумал:

Создать массив A [] [] с размером[(n)/(size_of_object_from_q)]x[(n)/(size_of_object_from_q)]

Переберите все элементы из p и для каждого:

mark all fields in A[][] as occupied, where the element "lies"

Поместите все элементы из q в соответствующие места, где поля в A [] [] не отмечены

(Мальчик, я надеюсь, что смогу сделать это понятным ...)

Есть ли лучший способ сделать это? Любая помощь будет принята с благодарностью!