Чтобы решить эту задачу, давайте начнем с определения, как мы можем вырезать максимальные квадраты из заданных прямоугольных кусков стекла.
Определение ограничений: Нам нужно вырезать два одинаковых квадрата. Это значит, что размер квадрата не должен превышать ни одного из размеров прямоугольника, из которого он вырезается.
Максимальный размер квадрата: Для каждого из прямоугольников мы можем вырезать квадрат со стороной
s, еслиsменьше или равен минимальному размеру по ширине и высоте, то есть:- Для первого прямоугольника размеры:
s1 = min(a, b) - Для второго прямоугольника размеры:
s2 = min(c, d)
- Для первого прямоугольника размеры:
Возможные варианты: Из двух прямоугольников мы можем вырезать два квадрата одного размера. Максимальный размер, который позволит вырезать два квадрата, будет равен
min(s1, s2). Однако, нужно также учитывать возможность вырезать оба квадрата из одного прямоугольника, что требует, чтобы коррекционные размеры также соответствовали:Также мы можем вырезать два квадрата из первого прямоугольника, если
aилиbдостаточно велики для этого. Для первого прямоугольника:- Если
a >= 2 * s, тоsдолжен быть наибольшим, равным целой части отa/2. - Если
b >= 2 * s, то аналогично:sдолжен быть наибольшим, равнымb/2.
- Если
Аналогично для второго прямоугольника:
- Если
c >= 2 * s, тоsдолжен быть наибольшим, равнымc/2. - Если
d >= 2 * s, тоsтакже должен быть равнымd/2.
- Если
Алгоритм:
- Сначала находим максимальные возможные размеры квадрата из каждого прямоугольника.
- Затем проверяем возможность вырезания из обоих прямоугольников и вычисляем максимальный размер квадрата.
Теперь перейдем к коду, который реализует описанный алгоритм:
def max_square(a, b, c, d):
# Определим максимальный размер из первого прямоугольника
max_square_from_first = min(a, b)
max_square_from_second = min(c, d)
# Поиск максимального размера из двух равных квадратов
max_square_size = min(max_square_from_first, max_square_from_second)
# Проверяем возможность вырезать два квадрата из первого
if a >= 2 * max_square_size and b >= max_square_size:
max_square_size = max(max_square_size, a / 2)
if b >= 2 * max_square_size and a >= max_square_size:
max_square_size = max(max_square_size, b / 2)
# Проверяем возможность вырезать два квадрата из второго
if c >= 2 * max_square_size and d >= max_square_size:
max_square_size = max(max_square_size, c / 2)
if d >= 2 * max_square_size and c >= max_square_size:
max_square_size = max(max_square_size, d / 2)
return round(max_square_size, 1)
# Ввод данных
a, b = map(int, input().split())
c, d = map(int, input().split())
# Получаем результат и выводим его
result = max_square(a, b, c, d)
print(result)
Этот код принимает размеры двух прямоугольников и вычисляет максимальный размер квадратного окна, который можно вырезать с учетом всех условий.
