Programacion, ACM ICPC, UVa Online Judge

El link del problema es el siguiente:
11207 – The easiest way

El problema es del tipo Ad hoc.
Lo que nos dicen es que tenemos que formar 4 figuras de papel, pero para eso necesitamos 4 cuadrados para formarlos.
Cada caso de entrada nos darán «n» hojas de papel y sus dimensiones, y a cada hoja hay que dividirla en 4 cuadrados y decir con que hoja de papel podremos obtener la figura de papel mas grande.

Para esto hay dos formas de dividir la hoja de papel de tal manera que tengamos cuadrados:
XX    y    XXXX
XX

Donde X representa un cuadrado generado de la hoja de papel.
Para obtener el tamaño del cuadrado mas grande son como mencione 2 casos:

  • Si hacemos que la hoja forme un cuadrado tenemos que el lado mas pequeño entre 2 nos daría el cuadro mas grande que se pueda formar con la hoja. (Esto hace mención al primer dibujo)

Para el otro caso (haciendo mención al segundo dibujo), hay que revisar 2 casos mas:

  • Los cuadrados se pueden obtener como el lado mas largo entre 4
  • Los cuadrados se pueden obtener como el lado mas corto

Esas dos longitudes representarían el lado mas pequeño del cuadrado, así que hay que obtener el mas pequeño de esos dos números, ya que si usáramos el mas grande quedarían rectángulos.

Una vez calculados esos 2 números, obtenemos el mas grande, ya que nos indica el lado del cuadrado mas grande que podemos obtener a partir de la hoja.
Una vez calculado el valor de cada hoja de papel, imprimir la primera hoja que maximiza el tamaño del cuadrado.

Código en C++

Deja un comentario