문제
무한한 2차원 좌표 평면 위에 네 대의 드론 , , , 가 배치되어 있다. 최초에는 각각 순서대로 , , , 에 배치되어 있다. 이때, 네 개의 드론 쌍 , , , 는 서로 통신하며 정보를 주고받고 있다. 예를 들어 드론 는 드론 , 와 통신을 주고받고 있지만, 드론 와는 통신을 주고받고 있지 않다.
각 드론의 통신 가능 거리는 최대 까지로 제한되어 있다. 어느 순간이라도 통신을 주고받고 있는 두 드론 사이의 거리가 을 초과하면 드론이 오작동을 일으키며 추락한다. 이때 두 드론이 , 에 위치할 때, 드론 사이의 거리는 로 계산한다.
드론 조종사인 상우는 네 대의 드론이 오작동을 일으키지 않게 하면서, 각각 순서대로 도착 지점인 , , , 로 이동시키고자 한다. 상우는 이를 위해 다음과 같이 드론을 조종하는 작업을 회 이상, 회 이하 수행할 수 있다.
- 드론 , , , 중 하나를 선택한다. 선택한 드론을 , 그리고 의 현재 좌표를 이라고 하자.
- 드론 을 이동시킬 목표 좌표 를 선택한다. 단, 에 다른 드론이 없어야 한다. 은 와 를 잇는 선분을 따라 이동한다.
상우는 드론을 기가 막히게 조종할 수 있지만 머리는 좋지 않아 여러분에게 도움을 요청했다. 즉, 드론이 오작동을 일으키지 않도록 하며, 네 대의 드론을 도착 지점까지 이동시키기 위한 작업을 출력하는 프로그램을 작성해 보자. 단, 작업 횟수를 최소화할 필요는 없다.
입력
첫째 줄에 세 정수 , , 가 공백으로 구분되어 주어진다.
출력
첫째 줄에 네 대의 드론을 도착 지점으로 옮기는 데 필요한 작업 횟수 를 출력한다. 단, 가 최소일 필요는 없다.
가 이상이라면, 둘째 줄부터 개의 줄에 수행할 작업을 순서대로 한 줄에 하나씩 출력한다. 각 줄은 \t{R X Y}의 형식으로 출력하며, 각 값이 가지는 의미는 다음과 같다.
- : 네 대의 드론 중 이동시킬 드론을 의미하는 영어 대문자. 은 영어 대문자 \t{A}, \t{B}, \t{C}, \t{D} 중 하나여야 한다.
- : 드론 이 이동할 목표 지점의 좌표.
- : 드론 이 이동할 목표 지점의 좌표.
- 와 는 정수여야 한다.
정답이 여러 개라면 그중 하나만 출력한다. 또한 가능한 모든 입력에 대해서 위 출력 조건을 만족하는 출력이 항상 존재함을 증명할 수 있다.
예제 입력 1
2 1 1
예제 출력 1
4
A 1 1
B 1 3
D 3 1
C 3 3
- 문제를 만든 사람
- 안우진
- 알고리즘 분류
코드를 제출하려면 로그인이 필요합니다.
로그인