Nombre Password [ Regístrate ]

Biblioteca infantil (OIE 3 - 1999)

 

En una biblioteca infantil se ha diseñado un sistema para determinar cada día en qué orden elegirán los niños el libro que desean leer. Para ello los bibliotecarios han decidido seguir la siguiente estrategia: cada día se formará un círculo con todos los niños. Uno de los niños es elegido al azar como el número 1 y el resto son numerados en orden creciente hasta N siguiendo el sentido de las agujas del reloj.

Comenzando desde 1 y moviéndose en sentido horario uno de los bibliotecarios cuenta k niños mientras el otro bibliotecario comienza en N y se mueve en sentido antihorario contando m niños. Los dos niños en los que se paren los bibliotecarios son elegidos; si los dos bibliotecarios coinciden en el mismo niño, ese será el único elegido.
Cada uno de los bibliotecarios comienza a contar de nuevo en el siguiente niño que permanezca en el círculo y el proceso continua hasta que no queda nadie.

Tened en cuenta que los dos niños abandonan simultáneamente el círculo, luego es posible que uno de los bibliotecarios cuente un niño ya seleccionado por el otro.

Se pide la construcción de un programa que, dado el número N de niños y los números k y m que utilizará cada bibliotecario en la selección, indique en qué orden irán siendo seleccionados los niños.

Entrada

Residente en el fichero de caracteres "BIBL.DAT": En cada línea aparecerán tres números (N, k y m, los tres mayores que 0 y menores que 20) separados por un único espacio en blanco y sin blancos ni al comienzo ni al final de la línea. La última línea del fichero contendrá siempre tres ceros.

Salida

A guardar en el fichero de caracteres "BIBL.OUT": Para cada línea de datos del fichero de entrada (excepto, claro está, la última que contiene tres ceros), se generará una línea de números que especifique el orden en que serían seleccionados los niños para esos valores de N, k y m. Cada número de la línea ocupará tres caracteres en el fichero (no llevarán ceros a la izquierda y serán completados con blancos por ese lado hasta alcanzar ese tamaño). Cuando dos niños son seleccionados simultáneamente, en el fichero aparecerá primero el elegido por el bibliotecario que cuenta en sentido horario. Los grupos de elegidos (de uno o dos niños cada uno) vendrán separados entre sí por comas (no debe ponerse una coma después del último grupo).

Ejemplo de entrada

10 4 3
5 2 8
13 2 2
0 0 0

Ejemplo de salida

  4  8,  9  5,  3  1,  2  6, 10,  7
  2  3,  5,  4  1
  2 12,  4 10,  6  8,  9  5, 13  1,  7,  3 11



© (2001-2008) ALGORITMIA.NET - Política de privacidad