DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

사다리와 쿼리

문제로 돌아가기

해설

가로선이 xxx번 막대와 x+1x+1x+1번 막대를 잇는 것을 sxs_xsx​라 쓰자. 먼저 높이가 증가하는 순서대로

s1,s2,⋯ ,sN−1,sN−1,⋯ ,s2,s1s_1,s_2,\cdots,s_{N-1},s_{N-1},\cdots,s_2,s_1s1​,s2​,⋯,sN−1​,s

을 만든다. 앞부분을 역순으로 한 뒷부분이 이어지므로, 이 사다리는 어느 막대에서 출발해도 같은 막대에 도착한다. 여기까지 2N−22N-22N−2번의 111번 연산을 사용한다.

목표 (a,b)(a,b)(a,b)를 처리할 때 a=ba=ba=b라면 바로 2 a2\ a2 a를 출력한다. 그렇지 않다면 a>1a>1a>1일 때 앞부분의 높이 에 있는 을 지운다. 일 때 뒷부분의 높이 에 있는 을 지운다. 그 상태에서 를 출력하고, 방금 지운 가로선을 다시 만든다.

앞부분에서 sa−1s_{a-1}sa−1​을 빼면 출발 막대 aaa가 기존의 111번 막대 경로로 옮겨진다. 뒷부분에서 sb−1s_{b-1}s을 빼면 그 경로가 번 막대로 이어진다. 따라서 질의의 결과는 이다. 복구 후에는 원래의 항등 사다리가 되므로 다음 목표에도 같은 방법을 쓸 수 있다.

처음에 2N−22N-22N−2번, 각 목표마다 최대 444번의 111번 연산을 사용한다. 총 6N−26N-26N−2번 이하이므로 제한을 만족한다. 출력의 길이와 계산 시간은 O(N)O(N)이다.

증명

가로선 sxs_xsx​는 그 높이를 지나가는 두 막대 xxx와 x+1x+1x+1의 경로를 교환한다. 처음 만든 가로선열은 앞쪽 열과 그 역열의 연결이므로 전체 경로의 대응은 항등이다.

앞쪽에서 sa−1s_{a-1} 하나를 제거한 효과는 항등 대응에서 과 의 경로를 교환하는 것이다. 뒤쪽에서 하나를 제거한 효과는 과 의 도착 막대를 교환하는 것이다. 두 제거를 함께 적용하면 출발 막대 의 경로가 먼저 의 경로로, 이어서 도착 막대 로 이어진다. 또는 이면 그쪽 제거는 필요 없다.

서브태스크 1에서는 가로선 없이 질의만 출력한다. 서브태스크 2에서는 두 막대를 잇는 가로선 하나를 질의 전후에 토글한다. 서브태스크 3에서는 뒷부분의 가로선만 잠시 지우면 된다. 전체 조건에서는 앞부분과 뒷부분을 모두 사용한다.

Solution written by GPT5

N
−
1
​
,
⋯
,
s2​
,
s1​
a−1a-1
a−1
sa−1s_{a-1}sa−1​
b>1b>1b>1
2N−b2N-b2N−b
sb−1s_{b-1}sb−1​
2 a2\ a2 a
b−1
​
bbb
bbb
O
(
N
)
sa−1​
111
aaa
sb−1s_{b-1}sb−1​
111
bbb
aaa
111
bbb
a=1a=1a=1
b=1b=1b=1

모든 질의 뒤에 제거했던 가로선을 복구하므로 다음 질의의 시작 상태는 항상 항등 사다리이다. 따라서 각 질의가 독립적으로 목표를 만족한다.