아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

칸막이 물탱크

시간 제한1초메모리 제한128 MB

요약
격벽으로 막힌 격자 수조의 뚜껑 구멍과 갇힌 공기를 반영해 채울 수 있는 물의 부피를 구합니다.
난이도

보통10점 중 7점

유형
BFS, 그래프, 시뮬레이션, 행렬
정답자
아직 제출이 없습니다

문제

얇은 직육면체 물탱크가 세워져 있고, 안쪽에는 물의 흐름을 막는 칸막이가 붙어 있다. 물은 탱크 뚜껑에 뚫린 구멍으로 부어 넣지만 칸막이가 물길을 막아서, 탱크 안 여기저기에 공기 주머니가 갇힌 채로 남는다.

아래 그림은 그런 탱크 하나를 옆에서 본 단면과, 앞면을 걷어내고 비스듬히 본 모습이다. 탱크는 가득 찼지만 칸막이 배치 때문에 회색으로 그린 공기 주머니가 두 개 남았다. 그래도 초록색으로 그린 우물에는 물이 들어간다. 사이펀 효과로 물이 양쪽 사이에 놓인 칸막이 윗면을 타고 흘러가 떨어지고, 그 칸막이 위쪽 공기는 그대로 남는다.

탱크와 그 안의 칸, 칸막이는 모두 격자에 맞춰 놓인다. 그림 속 탱크는 너비 5, 높이 4, 두께 1이므로 부피가 20 세제곱 단위이다. 갇힌 공기가 4 세제곱 단위를 차지해서 물은 16 세제곱 단위만 담긴다. 칸막이는 부피를 차지하지 않고 공기는 압축되지 않으므로, 갇힌 공기 주머니는 크기를 그대로 유지한다.

물이 차오르는 동안 물과 공기는 다음 규칙대로 움직인다.

  • 물은 뚜껑에 뚫린 구멍마다 들어와서, 열려 있는 칸 경계를 따라 아래로 흐르고 옆으로도 퍼진다.
  • 한 칸이 물로 가득 차면 수면이 바로 윗칸 바닥에 닿고, 물은 거기서 옆으로 더 흘러간다. 물이 칸막이를 타고 넘어가 건너편 우물로 떨어지는 것이 이 경우다.
  • 공기는 위로 오른다. 열려 있는 경계를 따라 위나 옆으로 움직이다가 물이 위에서 떨어져 들어오는 자리를 만나면 그 물을 거슬러 빠져나간다. 뚜껑에 뚫린 구멍도 그런 자리로 친다.
  • 물이 닿고 그 칸의 공기가 빠져나가야만 그 칸이 물로 찬다. 나머지 칸은 바닥으로 물이 지나가더라도 공기로 남는다.

탱크가 가득 찰 때까지 부을 수 있는 물의 양을 구하는 프로그램을 작성하라.

입력

입력은 탱크 여러 개를 차례로 담는다. 각 탱크는 공백 하나로 구분한 정수 두 개, 곧 탱크의 너비 ww (1≤w<1001 \le w < 100)와 높이 hh (1≤h≤10001 \le h \le 1000)가 적힌 줄로 시작한다. 모든 탱크의 두께는 1이다. 0 0이 적힌 줄이 나오면 입력이 끝난다.

그다음 정확히 h+1h + 1개의 줄이 오고, 각 줄은 정확히 2w+12w + 1개의 문자로 칸막이 위치를 나타낸다. 첫 줄은 실제 탱크 바로 위에 있는 뚜껑 칸 줄이고, 이어지는 hh개의 줄은 탱크의 각 행을 위에서 아래 순서로 나타낸다.

각 줄의 0번 문자는 탱크의 왼쪽 벽이다. 탱크 행에서는 |이고 뚜껑 줄에서는 .이다. 남은 2w2w개의 문자는 왼쪽부터 한 열에 두 문자씩 짝을 이룬다. 짝의 첫 문자는 그 칸 아래가 칸막이로 막혔으면 _, 아래가 열려 있으면 .이다. 둘째 문자는 그 칸 오른쪽이 칸막이로 막혔으면 |, 오른쪽이 열려 있으면 .이다.

뚜껑 줄에서는 짝의 첫 문자만 뜻을 가진다. _는 그 열의 위가 막혔다는 뜻이고, .은 물을 부어 넣는 구멍이다. 뚜껑 줄에 있는 짝의 둘째 문자는 모두 .이다.

탱크 행마다 마지막 문자는 탱크의 오른쪽 벽이라 항상 |이고, 마지막 줄의 칸막이 문자는 탱크 바닥이라 항상 _이다. 문자를 이렇게 고른 덕분에 줄이 모이면 탱크 단면을 그린 아스키 그림이 된다.

출력

탱크마다 한 줄씩 출력한다. 한 줄에는 Tank, 공백 하나, 1부터 세는 탱크 번호, 콜론, 공백 하나, 그 탱크가 담을 수 있는 물의 부피를 차례로 적는다. 번호가 kk이고 물 vv 세제곱 단위를 담는 탱크는 Tank k: v 형태로 출력한다.

예제1

  1. 예제 1

    입력
    3 2
    .......
    |.....|
    |_._._|
    5 4
    ..._._._...
    |.|.._..|.|
    |.|.|.|...|
    |.|_|.....|
    |_._._._._|
    6 3
    ._._._..._._.
    |.._..|.|...|
    |.|.|_..|.|.|
    |_._|_|_._|_|
    0 0
    
    예상 출력
    Tank 1: 6
    Tank 2: 16
    Tank 3: 8