Alex e i quadrati di origami#7612

Alex e i quadrati di origami (Editoriale)

Se necessario, ruotiamo il rettangolo in modo che la sua larghezza sia non inferiore all'altezza. Consideriamo tutte le possibili varianti di disposizione dei tre quadrati.

Caso 1. La lunghezza del lato del quadrato è pari a :

Caso 2. Se w < 3h, allora la lunghezza del lato del quadrato è pari a :

Caso 3. Se w \ge 3h, allora la lunghezza del lato del quadrato è pari a :

Resta da scegliere tra i tre casi la lunghezza massima possibile del lato del quadrato.

max(h / 2, h) = h
max(h / 2, w / 3)

Implementazione dell'algoritmo

Leggiamo i dati in ingresso

scanf("%lf %lf",&w,&h);

Normalizziamo il rettangolo in modo che la sua larghezza sia non inferiore all'altezza .

if (w < h)
  temp = w, w = h, h = temp;

Calcoliamo e stampiamo la risposta.

if (w >= 3*h) res = h;
else res = max(h/2, w/3);
printf("%.3lf\n",res);

Implementazione in 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 < h)
    {
      double temp = w;
      w = h;
      h = temp;
    }
    double res;
    if (w >= 3*h) res = h;
    else res = Math.max(h/2, w/3);
    
    System.out.printf("%.3f\n",res);      
  }
}

Implementazione in Python

Leggiamo i dati in ingresso

w, h = map(float, input().split())

Normalizziamo il rettangolo in modo che la sua larghezza sia non inferiore all'altezza .

if w < h:
  w, h = h, w

Calcoliamo e stampiamo la risposta.

if w >= 3 * h:
  res = h
else:
  res = max(h / 2, w / 3)
print(res)