| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 | 1024 MB | 163 | 49 | 45 | 38.793% |
SUAPC 왕국의 국왕은 커다란 상금을 걸고 아래의 수수께끼를 냈다.
대부분의 사람은 위의 수수께끼를 풀 수 없다고 생각했지만, 자칭 수열 정렬 마스터인 어떤 사람이 나타나 이 수수께끼를 풀겠다고 선언했다. 국왕은 내일 모두가 보는 앞에서 이 수수께끼를 풀어보라고 지시했고, 수열 $A$에 $A_i = i$가 되는 순간 경보음이 울리는 경보 장치를 장착했다.
사실 수열 정렬 마스터도 이 수수께끼를 풀지 못한다. 그래서 그날 밤, 그는 수열 $A$에 몰래 접근해서 수열 $A$를 조작하기로 마음먹었다. 시간이 없으므로 교환 연산을 최대 $N/2$회 이하로 수행할 수 있으며, 중간에 $A_i = i$가 되는 경우가 없어야 한다. 그는 위의 조건대로 밤사이에 수열 $A$를 조작하여 다음날 수수께끼를 풀고 커다란 상금을 가져갈 수 있을까?
첫 번째 줄에 수열 $A$의 길이 $N$이 주어진다. ($3 \leq N \leq 200\,000$)
두 번째 줄에 서로 다른 $N$개의 정수 $A_1, A_2, \dots, A_N$이 공백으로 구분되어 주어진다. ($1 \leq A_i \leq N$; $A_i \neq i$)
만약 밤사이에 수열 $A$를 조작하고 수수께끼를 풀 수 있다면, 첫 번째 줄에 YES를 출력한다.
다음 줄에 밤사이에 수행한 연산의 횟수 $X$를 출력한다. ($0 \leq X \leq N/2$)
다음 $X$개의 줄에 걸쳐 두 원소를 바꾼 위치 $i$, $j$를 공백으로 구분하여 출력한다. 두 원소를 바꾼 뒤 $A_i = i$ 또는 $A_j = j$가 되는 경우는 없어야 한다. ($1 \leq i < j \leq N$)
다음 줄에 수수께끼를 푼 당일 수행한 연산의 횟수 $Y$를 출력한다. ($1 \leq Y \leq (N+1)/2$)
다음 $Y$개의 줄에 걸쳐 두 원소를 바꾼 위치 $i$, $j$를 공백으로 구분하여 출력한다. ($1 \leq i < j \leq N$)
가능한 정답이 여러 가지라면 그중 아무거나 출력한다.
만약 밤사이에 수열 $A$를 조작하고 수수께끼를 풀 수 없다면, 첫 번째 줄에 NO를 출력한다.
5 5 1 4 2 3
YES 1 2 3 3 2 4 3 5 1 5
3 2 3 1
YES 0 2 1 2 1 3
University > 신촌지역 대학생 프로그래밍 대회 동아리 연합 > 2026 신촌지역 대학교 프로그래밍 동아리 연합 겨울 대회 (SUAPC 2026 Winter) B번