시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
크기가 n×m인 이진 행렬이 있다. 이진 행렬은 모든 칸의 값이 0 또는 1인 행렬이다.
Reverse(x, y) 연산을 다음과 같이 정의한다. 먼저 (x, y)에 들어 있는 값을 k라고 하자. 이 연산은 (x, y)를 포함하며 상하좌우 인접으로 이어진 값 k의 연결 영역 전체를 찾아, 그 영역의 모든 값을 1-k로 바꾼다. 즉 0은 1로, 1은 0으로 바뀐다. 행 번호와 열 번호는 모두 1부터 시작한다.
목표는 Reverse 연산을 가능한 한 적게 사용하여 행렬의 모든 값을 같은 값, 즉 모두 0 또는 모두 1로 만드는 것이다.
첫째 줄에 두 정수 n, m이 주어진다. (1 ≤ n, m ≤ 100)
다음 n개의 줄에는 0과 1로 이루어진 길이 m의 문자열이 주어지며, i번째 줄은 행렬의 i번째 행을 나타낸다.
첫째 줄에 호출할 연산의 최소 횟수 K를 출력한다.
다음 K개의 줄에는 연산을 호출할 위치 x, y를 순서대로 출력한다. 각 줄은 해당 순서에 Reverse(x, y)를 호출한다는 뜻이다.