Ну я, как всегда, сначала сделал, а потом пошел читать, о том, как надо было

Но мне все равно интересно породолжить свой вариант... хотя надежд мало.
Вобщем, в двух словах, проверенная и хорошая стратегия заключается примерно в следующем:
Найти оптимальную площадь куда можно сложить все фигуры (т.е. просто сумма всех площадей). Для нее, естесственно, оптимальным периметром будет квадрат.
Попытаться разместить все фигуры.
Если получилось - мы закончили программу, иначе, увеличить площадь или увеличить периметр, не изменяя площадь, и попробовать разместить снова, и так, пока не поместится.