일자 빗자루로 방 쓸기
시간 제한10초메모리 제한256 MB
옆으로 미는 세로 빗자루로 모든 빈 칸을 닦을 수 있는 가장 긴 길이를 구하고 최소 쓸기 횟수를 구합니다.
문제
코딩에 빠져 지내는 사이 방에 먼지가 쌓였다. 부모님이 알아차리기 전에 방을 쓸어야 한다.
방은 행 열 격자로 나타낸다. 각 칸에는 가구가 놓여 있거나, 비어 있어서 쓸어야 한다. 빈 칸은 적어도 하나 있다.
청소에는 일자 빗자루를 쓴다. 길이가 인 일자 빗자루는 한 열에서 세로로 연속한 칸을 덮는다. 한 번의 쓸기는 빗자루를 내려놓고 가로 방향으로 원하는 거리만큼 미는 것이며, 미는 거리는 0이어도 된다. 쓸기가 진행되는 동안 빗자루는 항상 방 안에 완전히 들어 있어야 하고, 빗자루가 덮는 칸은 모두 비어 있어야 한다. 쓸기 도중 빗자루가 지나간 칸에서는 먼지가 사라진다.
빗자루는 길수록 좋으므로 방 전체를 쓸 수 있는 가장 긴 빗자루를 산다. 빈 칸이 모두 한 번 이상 쓸기에 포함되면 방을 전부 쓴 것이다. 빗자루 길이를 정한 다음에는 쓸기 횟수도 최소로 줄이려 한다.
입력
첫 줄에 행의 수 , 열의 수 , 가구의 개수 가 주어진다. (, , )
다음 개의 줄에는 가구 하나의 행 번호 과 열 번호 가 주어진다. (, ) 같은 좌표에 두 가구가 놓이는 경우는 없다.
출력
첫 줄에 살 수 있는 가장 긴 빗자루의 길이를 출력한다.
둘째 줄에 그 빗자루로 빈 칸을 모두 쓸 때 필요한 쓸기 횟수의 최솟값을 출력한다.