시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB220413533.019%

문제

바이너리 파워 비숍이 (x, y)에 있다면, (x + 2k, y + 2k), (x + 2k, y - 2k), (x - 2k, y + 2k), (x - 2k, y - 2k) 로 이동할 수 있으며, k는 음이 아닌 정수이다. 한 번 움직일 때 사용한 k는 다시 한 번 사용할 수 없다.

바이너리 파워 비숍이 (0, 0)에서 (x, y)로 이동하려고 한다. 이때, 방문하는 칸을 최소로 하는 프로그램을 작성하시오.

체스판의 크기는 무한대이고, 음수 좌표로도 방문할 수 있다.

입력

첫째 줄에 바이너리 파워 비숍이 가고자하는 위치인 x와 y가 공백을 사이에 두고 주어진다. 두 수는 100,000,000보다 작거나 같은 자연수이다.

출력

바이너리 파워 비숍이 (x, y)까지 이동할 때 방문하는 칸의 최솟값을 첫째 줄에 출력한다. 둘째 줄부터 차례대로 바이너리 파워 비숍이 거친 칸을 출력한다. 만약 이동할 수 없으면 첫째 줄에 -1을 출력한다. 방문하는 좌표를 출력할 때는, x,y 형식으로 출력해야 한다. 만약 가능한 경우의 수가 여러개이면 아무것이나 출력해도 된다.

예제 입력 1

8 24

예제 출력 1

3
0,0
-8,8
8,24

예제 입력 2

16 16

예제 출력 2

2
0,0
16,16

예제 입력 3

11 22

예제 출력 3

-1

예제 입력 4

123 321

예제 출력 4

9
0,0
-128,128
-112,112
-104,104
-100,100
102,98
-101,97
-133,65
123,321

출처

  • 문제를 번역한 사람: baekjoon
  • 문제의 오타를 찾은 사람: jinsj1