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

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

액체 고양이

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

요약
벽과 빈 칸으로 이루어진 n×m 격자에서 연결된 k개 빈 칸 영역의 가장 높은 칸이 놓일 수 있는 가장 낮은 행 번호를 구하고, 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

유형
이분 탐색, BFS, DFS, 구현
정답자
아직 제출이 없습니다

문제

고양이가 속이 빈 그릇에 들어가면 액체처럼 행동한다는 것은 잘 알려져 있다.

수학자 페트로프는 자기 고양이를 보며 이 현상을 자주 관찰했고, 여러 모양의 그릇을 만들어 고양이를 넣는 실험을 여러 번 했다. 고양이는 항상 몸의 가장 높은 지점이 가능한 한 낮아지도록, 즉 그 높이를 최소화하는 위치를 고른다는 사실이 밝혀졌다. 그릇에 여러 개의 움푹한 곳이 있으면 고양이는 그중 가장 낮은 곳을 고르는데, 들어갈 수 있는 곳만 고려한다.

페트로프는 문득 이런 생각을 했다. 고양이를 아날로그 컴퓨터로 써서 양자 최적화 문제를 풀 수 있지 않을까? 이 가설을 확인하려고 페트로프는 다음과 같은 수학적 모델을 만들었다.

그릇을 n×mn \times m 크기의 표 TT로 나타내자. 일부 칸은 벽이고 나머지 칸은 비어 있다. 그릇에서 고양이의 배치가 최적이라는 것은 다음 조건을 만족한다는 뜻이다.

  1. 고양이는 비어 있는 여러 칸을 차지한다. 고양이가 차지한 모든 칸은 kk개의 칸으로 이루어진 연결된 모양을 이룬다. 어떤 모양이 연결되어 있다는 것은, 각 칸에서 다른 모든 칸으로 변을 공유하는 인접 칸을 통해 이동할 수 있다는 뜻이다. 이동 경로에 있는 칸도 모두 고양이가 차지하고 있어야 한다.
  2. 고양이가 차지한 칸 중 가장 높은 칸의 행 번호 hh가 가능한 한 작아야 한다. 표의 행은 11부터 nn까지 번호가 매겨지며, 행 번호가 작을수록 더 높다.

안타깝게도 페트로프는 프로그래밍에 능숙하지 않다. 그는 표 TT와 고양이의 부피 kk가 주어졌을 때 고양이가 차지한 가장 높은 칸의 높이 hh를 구해 달라고 부탁한다.

입력

첫째 줄에 정수 nn, mm, kk가 주어진다. (1≤n,m≤10001 \le n,m \le 1000, 1≤k≤1061 \le k \le 10^6)

다음 nn개의 줄에는 각각 mm개의 문자가 주어지며 표 TT를 나타낸다. ii번째 줄의 jj번째 문자는 ii번째 행과 jj번째 열이 만나는 칸에 대응한다. "\#"는 그 칸이 벽이라는 뜻이고 "."는 그 칸이 비어 있다는 뜻이다.

출력

어떤 최적 배치에서든 고양이가 차지한 가장 높은 칸이 있는 행의 번호를 출력한다. 고양이를 그릇에 넣을 수 없으면 "-1"을 출력한다.

힌트

각 예제에서 고양이의 최적 배치는 다음 그림과 같을 수 있다.

예제3

  1. 예제 1

    입력
    6 11 7
    ...........
    .......#...
    .......#...
    #......#...
    ########...
    #######..##
    
    예상 출력
    4
    
  2. 예제 2

    입력
    6 11 15
    ...........
    .......#...
    .......#...
    #......#...
    ########...
    #######..##
    
    예상 출력
    2
    
  3. 예제 3

    입력
    5 11 30
    ..#......##
    ...........
    ......#....
    ......#....
    ......#....
    
    예상 출력
    2