Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct  2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> def поместить_ковер(ковер, ширина_витрины, высота_витрины):
...         nonlocal максимальная_площадь
...         if not ковер:
...             # Если больше нет ковров, вернуть площадь текущей расстановки.
...             максимальная_площадь = max(максимальная_площадь, ширина_витрины * высота_витрины)
...             return
...         if ковер[0][0] <= ширина_витрины and ковер[0][1] <= высота_витрины:
...             # Размещаем ковер влево и вверх.
...             поместить_ковер(ковер[1:], ширина_витрины, высота_витрины - ковер[0][1])
...             # Размещаем ковер вправо и вниз.
...             поместить_ковер(ковер[1:], ковер[0][0], высота_витрины)
...             поместить_ковер(ковер[1:], ширина_витрины - ковер[0][0], ковер[0][1])
... 
...     поместить_ковер(ковры, витрина[0], витрина[1])
...     return максимальная_площадь
... 
... # Пример использования:
... ковры = [(4, 3), (2, 2), (3, 2), (1, 1)]
... витрина = (5, 5)
... 
... результат = максимальная_площадь_ковров(ковры, витрина)
