Este problema es muy parecido al anterior problema de derrame de petróleo, excepto que en cada casilla hay corrientes marinas que hacen que el petróleo se desplace más rápidamente en una dirección que en otra. En concreto:
En ausencia de corrientes, o si la corriente es perpendicular a la dirección de avance, la mancha tarda unidades de tiempo en avanzar una casilla.
Si la corriente, de intensidad , es paralela a la dirección de avance, la mancha tarda unidades de tiempo en avanzar una casilla en el sentido de la corriente, y unidades de tiempo en el sentido contrario.
Al igual que en problema “Derrame de petróleo”, te pedimos que
simules la expansión de la mancha de petróleo. Esta vez, cada casilla se
especifica con dos caracteres. Las casillas sin barreras
(##) y que no sean origen de la mancha (’XX’)
son de la forma
,
donde
es un dígito de
a
que indica la intensidad
de la corriente, y
es un caracter ’N’, ’E’, ’S’ o
’W’ que indica la dirección de la corriente. Se entiende
que la corriente tiene intensidad
en las casillas que son origen de la mancha.
El formato de entrada es prácticamente idéntico al del problema “Derrame de petróleo”. El mapa se da con una línea con los números y (filas y columnas), seguido de líneas con pares de caracteres cada una, separados por espacios, con la descripción del mapa. Al menos habrá un origen del derrame, pero puede haber más de uno.
A continuación, una secuencia de líneas, cada una de las cuales con un instante de tiempo . Los tiempos se dan en orden creciente.
Para cada instante de tiempo
,
escribe el mapa con el estado del derrame en el instante de tiempo
,
siguiendo el formato indicado. Separa dos mapas con una cadena de
caracteres ’=’.
Si aspiras a obtener 100 puntos en este problema te recomendamos usar
el algorismo de Dijsktra (que no es mas que un recorrido en anchura,
teniendo en cuenta que los desplazamientos entre casillas vecinas tardan
tiempos distintos). ¡Si no sabes que es una cola de prioridades
(priority_queue), ahora es el momento de aprenderlo! (Mira
el tutorial de la STL en la web).
Habrá 10 grupos de juegos de prueba. Los juegos de prueba del grupo -ésimo tendrán mapas donde serán, como mucho, 3, 5, 8, 10, 20, 40, 60, 100, 250 y 500. No se pedirá escribir más de instantes de tiempo, que nunca serán superiores a . Se dará 10 puntos por cada grupo de juegos de pruebas resuelto en menos de 1 segundo de CPU por juego.
Input
7 10 9W 9W 9W 9W 9W 9W 9W 9W 9W 9W 0N 0N 0N 0N 0N 0N 0N 0N 5N 5N 0N 0N 0N 0N 0N 0N 0N 0N 5N 5N 9E XX 9E 9E 9E 9E 9E 9E 9N 9N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 9W 9W 9W 9W 9W 9W 9W 9W 9W 9W 0 9 10 20 30 40 50 60 65
Output
.......... .......... .......... .*........ .......... .......... .......... ========== .......... .......... .......... .*........ .......... .......... .......... ========== .......... .......... .*........ ***....... .*........ .......... .......... ========== .......... .*........ ***.....*. *********. ***....... .*........ .......... ========== .*...****. ***.....*. ********** ********** ********.. ***....... .*........ ========== ********** ********** ********** ********** *********. ********.. ***....... ========== ********** ********** ********** ********** ********** *********. ********.. ========== ********** ********** ********** ********** ********** ********** *********. ========== ********** ********** ********** ********** ********** ********** **********
Input
7 10 9W 9W 9W 9W 9W 9W 9W 9W 9W 9W 0N 0N 0N 0N 0N 0N 0N 0N 5N 5N ## ## ## ## ## ## ## ## 5N 5N 9E XX 9E 9E 9E 9E 9E 9E 9N 9N ## ## ## ## 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 0N 9W 9W 9W 9W 9W 9W 9W 9W 9W 9W 0 9 10 20 30 40 50 60 65
Output
.......... .......... ########.. .*........ ####...... .......... .......... ========== .......... .......... ########.. .*........ ####...... .......... .......... ========== .......... .......... ########.. ***....... ####...... .......... .......... ========== .......... .......... ########*. *********. ####...... .......... .......... ========== .....****. ........*. ########** ********** ####****.. .......... .......... ========== ********** .....***** ########** ********** ####*****. ....****.. .......... ========== ********** ********** ########** ********** ####****** ...******. ********.. ========== ********** ********** ########** ********** ####****** ********** *********. ========== ********** ********** ########** ********** ####****** ********** **********