한 걸음 더
시간 제한2초메모리 제한512 MB
직사각형 q개로 만들어진 n×m 표에서, 각 + 칸의 행과 열을 뒤집는 과정을 반복하면 모든 칸이 -가 되는지 판단하고 조작 횟수를 구합니다.
문제
크기의 표가 있고, 각 칸에는 "+" 또는 "-" 문자가 들어 있다. 연산 하나는 칸 하나를 골라 그 칸이 속한 행과 열의 모든 문자를 동시에 뒤집는 것이다. 선택한 칸 자체도 뒤집힌다. 문자를 뒤집는다는 것은 "+"를 "-"로, "-"를 "+"로 바꾸는 것이다.
바샤는 모든 칸을 "-"로 채우고 싶어 한다. 그는 다음 알고리즘을 사용한다.
- 모든 칸이 "
-"이면 알고리즘을 끝낸다. - 그렇지 않으면 현재 "
+"인 칸의 위치 를 기록한다. 그다음 각 칸 에 대해 연산을 한 번씩 수행하고 1번으로 돌아간다.
사샤는 바샤가 목표를 달성할 수 있는지 알고 싶어 한다. 달성할 수 있다면, 알고리즘이 끝날 때까지 바샤가 수행하는 연산의 총 횟수도 알고 싶어 한다.
입력
첫 줄에 세 정수 , , (, )가 주어진다.
이어지는 개의 줄에는 네 정수 , , , (, )가 주어진다. 이는 이고 인 모든 칸 를 포함하는 직사각형을 나타낸다. 칸이 홀수 개의 직사각형에 포함될 때에만 처음에 "+"이다.
출력
바샤가 끝내지 못하면 "-1"을 출력한다. 그렇지 않으면 바샤가 수행하는 연산의 횟수를 출력한다.
힌트
첫 번째 예시에서 표의 초기 상태는 다음과 같다.
++-
+-+
-++
여섯 번의 연산으로 이루어진 알고리즘을 한 번 반복하면 표가 모두 "-"로 채워진다.
두 번째 예시에서 표는 다음과 같으며, 알고리즘을 반복할 때마다 그대로 유지된다.
-++
+--
+--