#176
Gold V

Moving Formation

스페셜 저지
시간 제한
1s
메모리 제한
1024MB
제출
5
정답
4
맞힌 사람
4
정답 비율
80.0%

문제

무한한 2차원 좌표 평면 위에 네 대의 드론 AA, BB, CC, DD가 배치되어 있다. 최초에는 각각 순서대로 (0,0)(0, 0), (0,N)(0, N), (N,N)(N, N), (N,0)(N, 0)에 배치되어 있다. 이때, 네 개의 드론 쌍 (A,B)(A, B), (B,C)(B, C), (C,D)(C, D), (D,A)(D, A)는 서로 통신하며 정보를 주고받고 있다. 예를 들어 드론 AA는 드론 BB, DD와 통신을 주고받고 있지만, 드론 CC와는 통신을 주고받고 있지 않다.

각 드론의 통신 가능 거리는 최대 NN까지로 제한되어 있다. 어느 순간이라도 통신을 주고받고 있는 두 드론 사이의 거리가 NN을 초과하면 드론이 오작동을 일으키며 추락한다. 이때 두 드론이 (x1,y1)(x_1, y_1), (x2,y2)(x_2, y_2)에 위치할 때, 드론 사이의 거리는 (x1−x2)2+(y1−y2)2\sqrt{(x_1 - x_2)^2+(y_1 - y_2)^2}로 계산한다.

드론 조종사인 상우는 네 대의 드론이 오작동을 일으키지 않게 하면서, 각각 순서대로 도착 지점인 (x,y)(x, y), (x,y+N)(x, y + N), (x+N,y+N)(x + N, y + N), (x+N,y)(x + N, y)로 이동시키고자 한다. 상우는 이를 위해 다음과 같이 드론을 조종하는 작업을 00회 이상, 2 0002\,000회 이하 수행할 수 있다.

  • 드론 AA, BB, CC, DD 중 하나를 선택한다. 선택한 드론을 RR, 그리고 RR의 현재 좌표를 P=(x1,y1)P=(x_1, y_1)이라고 하자.
  • 드론 RR을 이동시킬 목표 좌표 Q=(x2,y2)Q=(x_2, y_2)를 선택한다. 단, (x2,y2)(x_2, y_2)에 다른 드론이 없어야 한다. RR은 PP와 QQ를 잇는 선분을 따라 이동한다.

상우는 드론을 기가 막히게 조종할 수 있지만 머리는 좋지 않아 여러분에게 도움을 요청했다. 즉, 드론이 오작동을 일으키지 않도록 하며, 네 대의 드론을 도착 지점까지 이동시키기 위한 작업을 출력하는 프로그램을 작성해 보자. 단, 작업 횟수를 최소화할 필요는 없다.

입력

첫째 줄에 세 정수 NN, xx, yy가 공백으로 구분되어 주어진다. (2≤N≤10;0≤x,y≤100)(2 \le N \le 10; 0 \le x, y \le 100)

출력

첫째 줄에 네 대의 드론을 도착 지점으로 옮기는 데 필요한 작업 횟수 KK를 출력한다. 단, KK가 최소일 필요는 없다. (0≤K≤2,000)(0 \le K \le 2,000)

KK가 11 이상이라면, 둘째 줄부터 KK개의 줄에 수행할 작업을 순서대로 한 줄에 하나씩 출력한다. 각 줄은 \t{R X Y}의 형식으로 출력하며, 각 값이 가지는 의미는 다음과 같다.

  • RR: 네 대의 드론 중 이동시킬 드론을 의미하는 영어 대문자. RR은 영어 대문자 \t{A}, \t{B}, \t{C}, \t{D} 중 하나여야 한다.
  • XX: 드론 RR이 이동할 목표 지점의 xx좌표. (0≤X≤200)(0 \le X \le 200)
  • YY: 드론 RR이 이동할 목표 지점의 yy좌표. (0≤Y≤200)(0 \le Y \le 200)
  • XX와 YY는 정수여야 한다.

정답이 여러 개라면 그중 하나만 출력한다. 또한 가능한 모든 입력에 대해서 위 출력 조건을 만족하는 출력이 항상 존재함을 증명할 수 있다.

예제 입력 1

2 1 1

예제 출력 1

4
A 1 1
B 1 3
D 3 1
C 3 3
문제를 만든 사람
안우진
알고리즘 분류
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출

제출 내역이 없습니다.

맞은 사람
#순위사용자언어시간메모리코드 길이
10121🥇
박승현
C++1ms1624KB2111B
10218🥈
옥찬호
Rust2ms2092KB2808B
10235🥉
황준영
PyPy28ms50460KB464B
93844
안우진
PyPy30ms50528KB1633B
난이도 투표
Gold V2명 투표· 7개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
#사용자문제결과언어시간메모리코드 길이제출 시간
10235
맞았습니다
PyPy28ms50460KB464B2026. 10. 04. 06:53
10218
맞았습니다
Rust2ms2092KB2808B2026. 10. 03. 23:37
10121
맞았습니다
C++1ms1624KB2111B2026. 10. 02. 09:17
10120
컴파일 에러
C++--2037B2026. 10. 02. 09:17
9384
맞았습니다
PyPy30ms50528KB1633B2026. 07. 09. 02:38