Kamen P43102


Statement
 

pdf   zip

html

Desde hace dos semanas, Domeniko ha estado estirado en cama porque su amigo Nedjeljko accidentalmente tiró una roca encima de su pie izquierdo. Como Domeniko ya ha resuelto todos los problemas de la olimpiada, tiene que buscar un nuevo modo de pasar el tiempo.

El nuevo juego de Domeniko requiere un tablero de dimensiones R por C. Inicialmente, cada recuadro está vacío, o contiene un muro. Domeniko puede “lanzar” piedras en el tablero situándola en la fila superior de una columna, y dejando que la “gravedad” la haga caer hasta encontrar un obstáculo. En concreto:

  • Si la casilla debajo de la piedra es un muro, o si la piedra está en la fila inferior de la columna, la piedra permanece donde está.
  • Si la casilla debajo de la piedra está vacía, la piedra se mueve a esa casilla.
  • Si la casilla debajo de la piedra es otra piedra, entonces la piedra puede moverse lateralmente, como se describe a continuación:
    • Si la casilla izquierda y la casilla inferior-izquierda están vacías, entonces la piedra se desplaza una casilla a la izquierda.
    • Si esto no es posible, pero la casilla derecha y la inferior-derecha están vacías, entonces la piedra se desplaza una casilla a la derecha.
    • Si nada de esto ocurre, la piedra se queda donde está.

Domeniko nunca lanza una segunda piedra mientras la primera está moviéndose, y tampoco lanza una piedra por una columna tal que la primera casilla esté ocupada.

Haz un programa que dibuje como queda el tablero después de que Domeniko haya lanzado todas sus piedras.

Entrada

La primera línea contiene enteros R (entre 1 y 30000) y C (entre 1 y 30) con las dimensiones del tablero. A continuación, R líneas con C caracteres, describiendo la situación inicial del tablero. Un ’.’ representa una casilla vacía, mientras que una ’X’ representa una casilla con un muro.

A continuación, una línea con el número N de piedras que Domeniko lanza, seguido de N líneas con un entero entre 1 y C, la columna por la que Domeniko lanza la piedra. Se te garantiza que en el 60% de los casos de prueba, R no será mayor que 30.

Salida

Escribe R líneas, cada una con C caracteres, con la situación final del tablero. Usa la letra ’O’ para representar piedras.

Public test cases
  • Input

    5 4
    ....
    ....
    X...
    ....
    ....
    4
    1
    1
    1
    1
    

    Output

    ....
    O...
    X...
    ....
    OOO.
    
  • Input

    7 6
    ......
    ......
    ...XX.
    ......
    ......
    .XX...
    ......
    6
    1
    4
    4
    6
    4
    4
    

    Output

    ......
    ...O..
    ...XX.
    ......
    .OO...
    .XX...
    O..O.O
    
  • Information
    Author
    COCI06/07
    Language
    Spanish
    Official solutions
    C++
    User solutions
    C++