111205 Robo - Programming Challenges

Anuncio
Skiena y Revilla, Concursos Internacionales de Informática y Programación
Manual de Entrenamiento por Internet, Universidad de Valladolid, España, 2003. ISBN: 84-8448-371-1
111205
Robo
El inspector Robostop está furioso. Anoche robaron un banco y el ladrón escapó. Las carreteras de
salida de la ciudad se cerraron lo más pronto posible, para impedir que el ladrón escapase. Después,
el inspector le pidió a toda la gente de la ciudad que buscase al ladrón, pero las únicas respuestas que
recibió decı́an “No le vemos”.
Robostop está decidido a descubrir exactamente cómo escapó el ladrón. Nos pide que escribamos
un programa, que analice la información del inspector, para determinar dónde estaba el ladrón en un
momento determinado.
La ciudad en la que se produjo el robo tiene forma rectangular. Todas las carreteras que salen de la
ciudad fueron bloqueadas un cierto periodo de tiempo t, durante el cual se recibieron varios informes
del tipo “El ladrón no está en el rectángulo Ri a la hora ti ”. Asumiendo que el ladrón no se puede
mover más que una unidad de espacio por cada periodo de tiempo, tratemos de localizar la posición
exacta del ladrón en cada momento.
Entrada
La entrada describe varios robos. La primera lı́nea de cada descripción consta de tres números W ,
H y t (1 ≤ W, H, t ≤ 100), donde W es el ancho, H el alto de la ciudad y t es el periodo de tiempo
durante el cual las carreteras estuvieron cerradas.
La siguiente lı́nea contiene un único entero n (0 ≤ n ≤ 100), donde n es el número de mensajes que
recibió el inspector. Las siguientes n lı́neas constan, cada una, de cinco enteros ti , Li , Ti , Ri , Bi , donde
ti es el momento en que se produjo la observación (1 ≤ ti ≤ t), y Li , Ti , Ri , Bi son la izquierda, parte
superior, derecha y parte inferior, respectivamente, de la zona rectangular observada. El punto (1, 1)
es la esquina superior izquierda, y (W, H) es la esquina inferior derecha de la ciudad. Los mensajes
indican que el ladrón no estuvo en la zona indicada a la hora ti .
La entrada finaliza con un caso de prueba en el que W = H = t = 0. Este caso no debe ser
procesado.
Salida
Por cada robo, mostrar la lı́nea “Robbery #k:” (Robo #k:), donde k es el número del robo.
Después, hay tres posibilidades:
Si es imposible que el ladrón siga todavı́a en la ciudad, mostrar el mensaje “The robber has
escaped.” (El ladrón ha escapado).
En el resto de casos, asumiremos que el ladrón está todavı́a en la ciudad. Mostrar una lı́nea
con el formato “Time step τ : The robber has been at x,y.” (Tiempo τ : El ladrón estaba
en x,y) por cada instante en el que se pueda determinar la ubicación exacta, donde x e y son
la columna y la fila, respectivamente, del ladrón en el instante τ . Ordenar estas lı́neas por el
tiempo τ .
Si no se puede deducir nada, mostrar el mensaje “Nothing known.” (No se sabe nada) y esperar
que el inspector no se enfade aún más.
Imprimir una lı́nea en blanco al final de cada caso analizado.
http://www.programming-challenges.com
c
copyright 2006
Skiena y Revilla, Concursos Internacionales de Informática y Programación
Manual de Entrenamiento por Internet, Universidad de Valladolid, España, 2003. ISBN: 84-8448-371-1
Ejemplo de entrada
4 4 5
4
1 1 1
1 1 1
4 1 1
4 4 2
10 10
1
2 1 1
0 0 0
4
3
3
4
3
3
4
4
4
10 10
Ejemplo de salida
Robbery #1:
Time step 1:
Time step 2:
Time step 3:
Time step 4:
The
The
The
The
robber
robber
robber
robber
has
has
has
has
been
been
been
been
at
at
at
at
4,4.
4,3.
4,2.
4,1.
Robbery #2:
The robber has escaped.
http://www.programming-challenges.com
c
copyright 2006
Descargar