При необхідності повернемо прямокутник так, щоб його ширина була не меншою за висоту. Розглянемо всі можливі варіанти розташування трьох квадратів.
Випадок 1. Довжина сторони квадрата дорівнює :
Випадок 2. Якщо w \u003c 3h, то довжина сторони квадрата дорівнює :
Випадок 3. Якщо w \ge 3h, то довжина сторони квадрата дорівнює :
Залишається вибрати з трьох випадків максимально можливу довжину сторони квадрата.
Якщо w \ge 3h, перший і третій випадки можна об'єднати. Тоді довжина сторони квадрата дорівнює
Якщо w \u003c 3h, об'єднуємо перший і другий випадки. У цьому випадку довжина сторони квадрата дорівнює
Реалізація алгоритму
Читаємо вхідні дані
scanf("%lf %lf",\u0026w,\u0026h);Нормалізуємо прямокутник так, щоб його ширина була не меншою за висоту .
if (w \u003c h)
temp = w, w = h, h = temp;Обчислюємо та виводимо відповідь.
if (w \u003e= 3*h) res = h;
else res = max(h/2, w/3);
printf("%.3lf\n",res);Java реалізація
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
double w = con.nextDouble();
double h = con.nextDouble();
if (w \u003c h)
{
double temp = w;
w = h;
h = temp;
}
double res;
if (w \u003e= 3*h) res = h;
else res = Math.max(h/2, w/3);
System.out.printf("%.3f\n",res);
}
}Python реалізація
Читаємо вхідні дані
w, h = map(float, input().split())Нормалізуємо прямокутник так, щоб його ширина була не меншою за висоту .
if w \u003c h:
w, h = h, wОбчислюємо та виводимо відповідь.
if w \u003e= 3 * h:
res = h
else:
res = max(h / 2, w / 3)
print(res)