페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#2826

블록 (METEOR) 2초 128MB

문제

대형이는 R행 S열의 격자 상에서 블록이 낙하하는 게임을 만들려고 한다.

 

 

검은 칸은 땅을 의미하고, 빨간 칸은 블록을 의미한다. 

블록에 해당되는 칸들은 한 덩어리를 이루고 있으며, 땅에 해당되는 칸들도 한 덩어리를 이루고 있다. 

땅은 움직이지 않지만, 블록은 매 초마다 한 칸씩 아래로 움직인다. 

물론 블록 아래에 땅이 있으면 블록은 움직이지 않는다.

 

위와 같은 경우, 1초 후의 게임판의 상태는 아래와 같다. 

시간이 더 지나도 게임판은 아래와 같은 형태이다.

 

 

대형이는 문뜩 블록이 다 낙하한 후의 게임판의 상태를 알려고 한다. 

허나 격자의 크기가 큰 경우, 블록이 낙하하는 데 많은 시간이 걸리기 때문에 게임판의 상태를 알기 쉽지 않다. 

대형이를 도와 충분한 시간이 지난 후 게임판의 상태를 구하는 프로그램을 작성하여라.

 


입력

첫 번째 줄에 게임판의 크기 R, S가 주어진다. (3 ≤ R,S ≤ 3,000)

두 번째 줄부터 R개의 줄에는 게임판의 정보가 주어진다.

'.'는 빈 공간, '#'는 땅, 'X'는 블록을 의미한다.

문제를 간단히 하기 위하여, 가장 마지막 줄에는 오직 '#'로만 주어진다. 

또, 특정 줄에는 '.'만 있어서 그 위의 줄들에는 '#'가 없고, 그 아래의 줄들에는 'X'가 없음이 보장된다.


출력

충분한 시간이 지난 후 게임판의 상태를 출력한다.

예제1

입력
56

.XXXX.
...X..
......
#..###
######
출력
......

.XXXX.
...X..
#..###
######

예제2

입력
97

XXX.XXX
X.XXX.X
X..X..X
X.....X
.......
.#...#.
.##.##.
.#####.
#######
출력
.......

.......
.......
.......
XXX.XXX
X#XXX#X
X##X##X
X#####X
#######

출처

COCI 2014/2015 contest6 3

역링크 공식 문제집만