구멍 뚫린 체스판
시간 제한1초메모리 제한128 MB
구멍이 뚫린 K×W 체스판에서 서로 공격하지 않는 W개의 룩 배치 수를 바꾸지 않으면서 추가로 뚫을 수 있는 칸의 최대 개수를 구한다.
문제
Jaś와 Małgosia는 개의 열과 개의 행으로 이루어진 직사각형 체스판을 가지고 있습니다 (). 그런데 이 체스판의 몇몇 칸에는 구멍이 뚫려 있어서 그 칸에는 어떤 말도 놓을 수 없습니다. 구멍은 드릴로 노는 것을 좋아하는 Jaś가 뚫은 것입니다.
Małgosia는 이것이 마음에 들지 않았지만 수학을 잘했기 때문에, 서로 공격하지 않도록(즉 어떤 두 룩도 같은 행이나 같은 열에 놓이지 않도록) 구멍이 없는 칸에만 룩 개를 놓는 방법의 수를 세어 두었습니다. 이고 행이 정확히 개이므로, 이는 각 행에 룩을 하나씩 서로 다른 열에 놓는 방법의 수와 같습니다. Małgosia는 그 값을 적어 두고 이따금 값이 바뀌지 않았는지 확인합니다.
Jaś는 포기하지 않습니다. Małgosia가 눈치채지 못하도록, 즉 서로 공격하지 않게 룩 개를 놓는 방법의 수가 바뀌지 않도록 하면서 구멍을 최대한 많이 더 뚫으려고 합니다. 그래서 구멍을 더 뚫을 수 있는 칸(지금 구멍이 없는 칸)의 최대 개수를 찾는 것을 도와 달라고 합니다.
다음을 수행하는 프로그램을 작성하세요.
- 체스판의 크기와 구멍의 위치를 입력받습니다.
- 룩 개를 놓는 방법의 수를 바꾸지 않으면서 구멍을 뚫을 수 있는 칸의 최대 집합을 구합니다.
- 해당 칸들을 출력합니다.
입력
첫째 줄에 공백으로 구분된 세 자연수 , , 가 주어집니다 (, ). 와 는 각각 열의 개수와 행의 개수이고, 는 구멍의 개수입니다.
이어지는 개의 줄에 각 구멍의 위치가 주어집니다. 각 줄에는 공백으로 구분된 두 자연수 , 가 있으며 (, ), 이는 구멍이 있는 칸의 열 번호와 행 번호입니다. 같은 칸은 입력에 정확히 한 번만 나타납니다.
출력
첫째 줄에 구멍을 뚫을 수 있는 칸의 최대 개수 를 하나의 정수로 출력합니다.
이어지는 개의 줄에 구멍을 뚫을 수 있는 칸의 좌표를 열 번호 와 행 번호 순서로, 각 줄에 두 정수로 출력합니다. 칸은 먼저 좌표를 기준으로, 가 같으면 좌표를 기준으로 사전순으로 정렬해 출력합니다. 조건을 만족하는 최대 크기의 칸 집합은 유일하게 결정됩니다.